Add Thesis

Skalierbare Echtzeitverarbeitung mit Spark Streaming

Realisierung und Konzeption eines Car Information Systems

Written by P. Grulich

Paper category

Bachelor Thesis

Subject

Computer Science

Year

2016

Abstract

Bachelorarbeit: Spark verfolgt im Wesentlichen zwei Ziele: Zum einen verbessert es die Effizienz des bekannten Map-Reduce-Verarbeitungsverfahrens von Hadoop durch Memory Computing und kann große Datenmengen in kürzerer Zeit analysieren. Andererseits abstrahiert es Map-Reduce, so dass es für mehr Datenverarbeitungsanwendungen geeignet ist. Spark bietet beispielsweise auch Bibliotheken für maschinelles Lernen, Stream-, Graph- und Datenverarbeitung. Die abstrakte Verarbeitungsmethode SQL wird von der Clusterkomponente definiert, die verschiedene Aufgaben auf dem Rechencluster verteilt und verwaltet. Darauf aufbauend unter Punkt 2.2 die Verteilung bzw. nähere Erläuterung der zeitlichen Planung einer einzelnen Datenverarbeitungsaufgabe auf einem Rechnercluster. Punkt 2.3 zeigt den Einsatz von Clustermanagement und Spark-Anwendungen auf unterschiedlichen Plattformen. Punkt 2.4 beschreibt die vom Staat betroffenen Spark-Operationen und deren Umsetzungen. Der letzte Punkt ist die Einführung der verschiedenen Projekte des Spark-Ökosystems 2.1 Flexible verteilte Datensätze Resiliente verteilte Datensätze (RDD) bilden die grundlegende Datenabstraktion von Spark, die Fehlertoleranz und verteiltes Speicher-Computing realisiert, wodurch interaktive Anwendungen und Wiederverwendungszwischenprodukte realisiert werden Ergebnisse effizient. Viele iterative Machine-Learning-Algorithmen profitieren von letzterem. [ZCDD12] Aus der Sicht von Spark-Benutzern ist RDD eine unveränderliche Sammlung von Daten, die auf mehrere Computerknoten verteilt sind. Diese Art der Verteilung wird auch als Partition bezeichnet, daher besteht RDD in Spark immer aus einer Partition oder mehreren Partitionen. RDD kann nur auf zwei Arten generiert werden: - Durch Lesen aus einer persistenten Datenquelle, wie beispielsweise aus der verteilten Hadoop-Datei System (HDFS)-Dateikonvertierungsvorgänge, die auf vorhandenen RDDs bestimmt werden. In Spark wird RDD durch die folgenden Attribute beschrieben: Eine Liste von Abhängigkeiten, die entweder vom Vorgänger-RDD (auch als ParentRDD bekannt) oder der ursprünglichen Datenquelle abhängt. Es hängt davon ab, ob die RDD durch Konvertierung oder durch Einlesen einer Datei erstellt wurde. Eine Liste der jeweiligen Partitionen des RDD. Funktionen, die Operationen beschreiben, die auf jeder Partition parallel ausgeführt werden. Darüber hinaus kann das RDD über eine spezielle Partitionsfunktion verfügen, mit der das Datenverteilungsschema auf dem Cluster bestimmt werden kann. 3Spark Streaming Spark Streaming ist ein Projekt, das Spark um "Echtzeit"-Datenverarbeitungsfunktionen erweitert, was für eine Vielzahl von Big-Data-Anwendungsfällen besonders wichtig ist. So muss beispielsweise bei einer Kreditkartenzahlung ein Betrug bei der entsprechenden Transaktion so schnell wie möglich erkannt werden, damit diese noch storniert werden kann. Wenn die Datenanalyse erst in einem langwierigen Batch-Prozess durchgeführt werden kann, sind die gewonnenen Informationen in diesem Fall wertlos, da das Geld überwiesen wurde. Spark Streaming hat sich zum Ziel gesetzt, eine parallel durchführbare Analyse zu erreichen, einerseits eine große Anzahl von Computern, andererseits können die meisten Computer eine Verzögerung in der Reichweite tolerieren von wenigen Sekunden [ZDLH13]. Use Cases mit geringeren Latenzanforderungen, wie der hochfrequente Aktienhandel, sind nicht die Zielgruppe von Spark Streaming [ZDLH13]. Ein weiteres Ziel ist es, Rechnerausfälle im Cluster möglichst schnell und effizient zu kompensieren. Beim Spark Streaming wird jeder Datenverarbeitungsschritt auf einem kontinuierlichen Datenstrom, dem sogenannten Stream, definiert. Diese können aus verschiedenen Quellen stammen, beispielsweise von einem TCP-Socket, bei dem jede empfangene Nachricht ein Element im Stream darstellt. Um Streams verarbeiten zu können, führt Spark das Konzept der diskreten Streams (DStreams) ein, welches die Abstraktion bekannter RDDs darstellt.Die folgende Diskussion dieses Abstraktionsmerkmals. 3.1 Micro-Batch-Verarbeitung Beim Spark Streaming wird eine einzelne Nachricht im sogenannten Micro-Batch-Processing verarbeitet. Dabei werden mehrere Messages aus einem gemeinsamen Zeitintervall in einem RDD zusammengefasst und dann jede Message direkt separat verarbeitet wie bei der gemeinsamen Batch-Verarbeitung in Spark [ZDLS12] eingehenden Elementen. Die Länge des Batch-Intervalls wird als Parameter an DStream übergeben und kann zwischen 100 Millisekunden und mehreren Sekunden liegen. 3.2 DStream-Operation Da DStream intern auf RDD basiert, bieten sie manchmal ähnliche Operationen. Diese sind in Conversions und Aktionen unterteilt. Jede Konvertierung generiert einen neuen DStream. Als Konvertierung gibt es die aus RDD bekannten Operationen map() und filter(), die direkt auf die einzelnen Daten des Streams wirken. Andererseits bietet Spark Streaming auch eine transform()-Funktion, die auf jedem RDD eine benutzerdefinierte Funktion ausführt, also sehr vielseitig ist. Aktionen umfassen Ausgabeoperationen wie forEachRDD() Darüber hinaus können verschiedene DStreams auch durch Join()- oder union()-Operationen kombiniert werden, was ebenfalls möglich ist. Read Less