Add Thesis

Apache Spark

Untersuchung der Möglichkeiten zur verteilten Datenverarbeitung und Analyse von Streaming Data

Written by D. Müller

Paper category

Master Thesis

Subject

Computer Science

Year

2015

Abstract

Masterarbeit: Apache Spark Obwohl MapReduce speziell für die Stapelverarbeitung verwendet wird, werden seit vielen Jahren schnellere und spezifische temporäre Anfragen gefordert. Durch die Wiederverwendung nützlicher Komponenten in MapReduce und die Nutzung neuer Hardwarestandards kann eine Echtzeitanalyse des Datenbestands erreicht werden. Aus diesen Ideen hat sich in den letzten Jahren das Framework Apache Spark entwickelt. Wie MapReduce ermöglicht es verteiltes Rechnen mit jeder großen Datenmenge, ohne die Einschränkungen der Fehlertoleranz und Skalierbarkeit akzeptieren zu müssen. Schnellere Berechnungen werden vor allem durch den Einsatz sogenannter RDDs (Resilient Distributed Data Sets) zur Abstraktion und den Einsatz von In-Memory-Computing erreicht. Im Vergleich zur kontinuierlichen Neuberechnung mit MapReduce bringt die Wiederverwendung zuvor berechneter Daten in iterativen Aufgaben zudem eine deutliche Geschwindigkeitssteigerung. Spark lädt nicht mehrfach von der Platte, sondern liest nur Daten aus dem Hauptspeicher zur weiteren Verarbeitung (sofern diese mindestens einmal berechnet wurden, dort zwischengespeichert und nicht durch neue Aufgaben überschrieben werden). Durch diese Neuerungen wurde die Rechenzeit um den Faktor 100 reduziert, was den Einsatz in einer Echtzeitumgebung ermöglicht [16]. [26] zeigt beispielsweise eine Anfrage nach einer 39-GB-Datenbank, bei der bereits in deutlich früheren Versionen von Spark eine Laufzeit von unter einer Sekunde erreicht werden kann. Vor allem bei iterativen Berechnungen zahlt sich die Wiederverwendung früherer Ergebnisse aus. Abbildung 9 zeigt die Benchmark-Ergebnisse der Regressionsaufgabe. Obwohl Spark aufgrund des höheren Overheads immer noch langsamer ist als Hadoop, bleibt die Gesamtberechnungszeit mit nur einer Iteration fast unverändert, wenn mehrere Iterationen durchgeführt werden. 4.1 Historische Entwicklung Spark ist ein Open-Source-Projekt, das über die Jahre durch verschiedene Entwicklungsteams gewachsen und gewachsen ist. Spark ist ein Forschungsprojekt, das 2009 vom RAD Laboratory der University of California, Berkeley, ins Leben gerufen wurde und später zu AMPLab wurde. Teilnehmende Forscher hatten zuvor am Hadoop MapReduce-Projekt teilgenommen und festgestellt, dass iterative Aufgaben ineffizient waren, was zu diesem Zeitpunkt zum Start des Spark-Projekts führte. Schon kurz nach dem Start kann die Geschwindigkeit verschiedener Aufgaben um das 10- bis 20-fache erhöht werden. Entsprechend großes Interesse haben auch externe Firmen geweckt, die sich ebenfalls sehr früh der Spark-Community angeschlossen haben. Neben der University of Berkeley, Databricks, Yahoo! Intel ist einer der Hauptverantwortlichen. 4.2 Spark-Architektur Das Spark-Framework besteht aus verschiedenen Komponenten, die durch ihr Zusammenspiel eine einheitliche allgemeine Plattform für die verteilte Verarbeitung von Daten bietet [27], Spark wird verwendet, um Daten aus verschiedenen Quellen zu empfangen, zu verarbeiten und zu speichern. Spark muss nicht für jeden Verantwortungsbereich mehrere Frameworks installieren, sondern bildet für diese Bereiche eine einheitliche und vollständige Lösung. Im nächsten Abschnitt werden die Komponenten von Spark sowie Abbildung 10 beschrieben. Informationen zur Paketstruktur und Installation von Spark finden Sie in Anhang A.4. 4.2.1 Spark-Komponenten Einerseits kann Spark über Spark-SQL-Komponenten mit verschiedenen Datenbanken kommunizieren. Benutzer können über SQL-ähnliche Abfragen auf die Daten zugreifen. Hier kann die Standardkommunikation mit den Datenquellen JSON, Hive und Parquet erfolgen. Durch die Integration zusätzlicher Treiber lassen sich auch andere Datenspeicherlösungen wie B. Cassandra 20. Eine weitere Komponente ist die Spark Streaming Library. Es kann den Datenfluss zum System verarbeiten. Anwendungsgebiete sind beispielsweise das Empfangen und Überwachen von Log-Ereignissen oder das Empfangen von Meldungen von Sensornetzwerken. 21MLlib ist der Name einer anderen Bibliothek, die im Spark-Standard enthalten ist. Es wird im Bereich des maschinellen Lernens eingesetzt, darunter Algorithmen für Klassifikations-, Regressions- und Clustering-Aufgaben sowie weitere Funktionen wie die Auswertung. 22 Da Rechenaufgaben in der Regel in Form von Graphen dargestellt werden, enthält Spark entsprechende Bibliotheken, um diese zu manipulieren und zu verarbeiten. GraphX ​​ist eine Bibliothek, die von Spark verwendet wird, um Graphen zu erstellen, zum Beispiel: B. in sozialen Netzwerken verwendet, um die Beziehung zwischen Benutzern abzubilden, damit diese verarbeitet werden können. Spark Core bietet grundlegende Funktionen, um die Routineverarbeitung jeder Aufgabe zu implementieren. Diese Komponente stellt beispielsweise die Aufgabenplanung, Ressourcenzuweisung, Fehlerbehandlung und Kommunikation mit der Datenschicht sicher. Auch die Programmierabstraktion RDD (Resilient Distributed Data Set) von Spark zum Sammeln und Verarbeiten von Daten wird hier definiert und den Nutzern über entsprechende APIs zur Verfügung gestellt. Unterhalb von Spark Core befinden sich verschiedene Cluster-Manager, die Spark verwenden kann. Sie sorgen für eine verteilte und skalierbare Struktur des Clusters. Neben dem Standalone-Scheduler für Standalone-Spark-Installationen gibt es auch einen YARN- und Mesos-Manager. Diese beiden ermöglichen die Integration von Spark in bestehende Hadoop oder. Mesos-Cluster. Read Less