3.3 Grundlagen von Spark

  • Spark ist ein Framework für Echtzeitdatenverarbeitung in einem Hadoopcluster.
  • Spark wurde ursprünglich an der Universität von Kalifornien in Berkeley entwickelt und basiert auf der Programmiersprache Scala.
  • Durch in-memory-Verarbeitung ermöglicht Spark eine höhere Geschwindigkeit zur Datenverarbeitung als MapReduce (bis zu 100x schneller bei großen Datensätzen).
  • Da es jedoch nicht gerade ressourcensparend arbeitet, wird trotzdem noch MapReduce eingesetzt.
  • Spark gibt dir Flexibilität, da du deine Programmiersprachen wie Java oder Python ohne Anpassungen verwenden kannst.
  • Eine sogenannte „DAG Engine“ (directed acyclic graph) optimiert die Arbeitsabläufe, gleiche Vorgehensweise wie bei Tez und Pig.
  • Spark wird häufig bei aktuellen Problemen großer Techkonzerne eingesetzt, z. B. bei Amazon, Ebay, der NASA, Groupon, Tripadvisor, Yahoo, etc.. Du findest eine ausführliche Liste hier: http://spark.apache.org/powered-by.html.
  • Spark ist skalierbar.

Wie funktioniert eine Spark-Abfrage? Und warum ist Spark skalierbar?

Wenn du eine Anfrage absendest, startet dies meist mit deinem selbst geschriebenen Skript. Dies geht zum Cluster Manager über beispielsweise SPARK und YARN und wird dann anschließend auf einen Ausführungsknoten zur Ausführung vergeben. Diese Ausführungsknoten und auch die Clustermanager sind erweiterbar. Spark musst du jedoch nicht in einem Hadoop-Cluster laufen lassen, du kannst es auch für sich alleine laufen lassen. In diesem Fall wird ein eigener Cluster Manager genutzt. 

Auf den Ausführungsknoten befindet sich der Cache für die Aufgabe sowie die Tasks, welche auszuführen sind. Der Cache spielt bei Spark eine besondere Rolle, da Spark im Arbeitsspeicher läuft. Das ist der Hauptgrund, weswegen Spark so schnell verarbeiten kann, ist jedoch auch sehr ressourcenfressend. Ein Cache ist deswegen unerlässlich.

Wie kann ich Spark verwenden?

Spark kann mit Python-, Java- oder Scala-Code umgehen.

Aus welchen Komponenten besteht Spark?

Alle 5 Bestandteile sind bereits in einer Standard-Installation von Spark enthalten.

Spark CoreDer Kern von Spark und die Grundlage für die anderen 4 Services. 
Spark StreamingAnstelle der Ausführung von Batch Prozessen ist mit Spark Streaming die Verarbeitung auf Echtzeitdaten möglich. 
Spark SQLSQL-Interface für Spark, damit man nicht auf Java oder andere Programmiersprachen zurückgreifen muss. Vorteil ist hierbei ein zusätzlicher Geschwindigkeitsgewinn.
MLLibFramework mit Machine Learning und Data Mining Tools.
GraphXFramework zur Implementierung einer Grafikauswertung in Spark.


Weiter geht es mit: 3.4 Ein Beispiel mit Spark