Apache Spark: Hadoop Killer oder Ergänzung?

Die „Big Data Frage“

Es war einmal ein Big Data Framework namens Hadoop …  … welches eine Datenrevolution auslöste. Der kleine gelbe Elefant ermöglichte durch seinen Map-und Reduce-Algorithmus und dem YARN Ressourcen Manager eine erstmalige wirtschaftliche Nutzung von riesigen Datenmengen.

Eine Erfolgsgeschichte, die viele Unternehmen veranlasst hat, selbst Big-Data-Projekte auf Basis von Hadoop umzusetzen.

Doch im Schatten dieser Entwicklung wurde bereits fünf Jahre lang an einem anderen Open-Source-Projekt gearbeitet, welches in den letzten Jahren zunehmend an Popularität gewonnen hat: Apache Spark. Denn trotz des Erfolgs, ein Alleskönner ist Hadoop nicht und seine größte Schwäche ist die Geschwindigkeit.

Also: Hadoop oder Spark?

Hadoop wird in verschiedenen Branchen erfolgreich zur Analyse großer Datenmengen eingesetzt. Der Erfolg beruht auf dem MapReduce-Verfahren, welches in drei Phasen die Daten verarbeitet, Berechnungen parallelisiert und auf mehrere Rechner verteilt. Doch diese zehn Jahre alte Basis-Komponente des Systems ist zwar fehlertolerant, skalierbar und kosteneffektiv, besitzt aber auch eine hohe Latenz, ist Batch-orientiert und nicht für Echtzeitdaten-Analysen geeignet.

Und was macht die Konkurrenz anders? Im Sommer 2016 wurde mit der Version 2.0.0 die Release-Nummer auf eine neue Ebene gehoben und damit gezeigt, dass Apache Spark den Beta-Status längst verlassen hat und in vielen Unternehmen bereits das bestehende Hadoop-System ablöst. Besucht man die Webseite des Top-Level-Projektes, werden die Vorzüge direkt vorgestellt:

  • Geschwindigkeit: Programme laufen aufgrund der In-Memory-Verarbeitung bis zu 100 Mal schneller als Hadoop MapReduce Tasks - auf Festplatte immerhin noch 10 Mal schneller
  • Einfachheit: Applikationen können mit Java, Scala, Python und R geschrieben werden
  • Features: Kombination aus Spark SQL, Spark Streaming und komplexen Analysen
  • Universelle Plattform: Spark läuft auf Hadoop, Mesos, StandAlone oder in der Cloud und kann verschiedene Datenquellen einschließlich HDFS, Cassandra, HBase und S3 anbinden

Es wird deutlich, dass Apache Spark im Gegensatz zu Hadoop auf eine In-Memory-Datenverarbeitung setzt, bei der Daten direkt im Arbeitsspeicher der Cluster-Knoten verarbeitet werden und nur punktuell auf die Festplatte gespeichert werden. Schreibe- und Ladeprozesse werden damit auf ein Minimum reduziert, was im direkten Vergleich entsprechende Geschwindigkeitsvorteile bringt. Doch neben der Performance sprechen auch Flexibilität, Einsatzbreite und Skalierbarkeit für das System.

Bei der aktuellen positiven Resonanz wird Spark schnell als „Hadoop-Killer“ bezeichnet. Doch vor allem in den bestehenden Big-Data-Projekten der Unternehmen werden sich der/die EntwicklerIn und ProjektleiterIn aktuell fragen, wie Sie die Vorzüge nutzen können ohne ihre komplette Architektur umzubauen. Genaugenommen kann Spark beides sein: Ein dominierendes Konkurrenzprodukt oder eine ausgezeichnete Ergänzung zu Hadoop. Patrick McFadin von DataStax spiegelt die Sichtweise vieler Unternehmen wieder: "Hadoop ist der Standard, wenn es um Datawarehouse und Offline-Datenanalysen geht, doch Spark mit Cassandra ist eine bessere Alternative für alle Anwendungen, bei denen die Geschwindigkeit eine große Rolle spielt - beispielsweise Echtzeit-Analysen."  Bei der Integration von Spark in Hadoop kann auf viele Hadoop Komponenten wie dem YARN Ressourcen Manager zur Steuerung der Clusterknoten, die Datenablage im File-System (HDFS) zur Speicherung und Wiederherstellung im Fehlerfall sowie Systeme zum Datenschutz zurückgegriffen werden.

Auf der anderen Seite kann durch die In-Memory-Verarbeitung mit Spark erstmalig eine Realtime-Datenverarbeitung stattfinden, was zu neuen Anwendungsfällen und Projekten führt. Hier spielt auch die angesprochene Flexibilität eine Rolle, da die Möglichkeit besteht, eine StandAlone-Plattform neben dem bestehenden Big-Data-Framework aufzubauen oder mittels Hive on Spark eine direkte Beschleunigung im Hadoop-Umfeld zu erzielen.

Am Ende bleibt die zuvor gestellte Frage. Die Antwort: Es kommt drauf an. Wenn im Unternehmen bereits ein etabliertes Hadoop System existiert, sollte Apache Spark nicht sofort eine Ablöse, sondern eher eine Erweiterung für neuen Mehrwert darstellen. Ist noch kein Big-Data-Projekt im Unternehmen vorhanden, sollte der Fokus auf Spark StandAlone liegen.

Quellen

Abbildungen

Autor

Rico Pommerenke