Spark versus Flink – Rumble in the (Big Data) Jungle

Nachdem Apache Spark viele Sympathien erringen konnte und MapReduce langsam, aber sicher den Rang abläuft, kommt mit Apache Flink unerwartete Konkurrenz. Während Spark in erster Linie auf Batch-Verarbeitung setzt und durch Spark Streaming die Verarbeitung von Real-Time Daten mit Micro-Batching erlaubt, liegt bei Flink der Fokus auf Streaming, und alles andere baut darauf auf.

Know-how  –  0 Kommentare
Spark versus Flink ? Rumble in the (Big Data) Jungle

Ende Januar 2016 feierte Apache Hadoop sein zehnjähriges Jubiläum. In dieser Dekade hat Hadoop maßgeblich zum Renommee von Big Data in der Softwarewelt beigetragen. Konnten Firmen vorher nur mit Spezialhardware oder jahrelanger Forschung und Entwicklung große und schnell eintreffende Datenmengen verarbeiten, bot Hadoop auf Open-Source-Basis und Commodity-Hardware eine kostengünstige Möglichkeit, in die Big-Data-Verarbeitung einzusteigen. Die Grundbausteine von Hadoop, MapReduce und HDFS basieren auf Konzepten, die Google 2004 veröffentlichte und die Yahoo in Java schließlich unter dem Namen Hadoop implementierte.

Während HDFS immer noch eine wichtige Rolle bei Hadoop spielt, hat MapReduce seit der zweiten Hauptversion der Plattform an Bedeutung verloren. Inzwischen gibt es eine Vielzahl von Processing-Frameworks, die auf Hadoop beziehungsweise dem Resource Manager YARN laufen. Der Artikel vergleicht zwei miteinander, die beide unter dem Dach der Apache Software Foundation zu finden sind: Spark und Flink.

Apache Spark Apache Flink
Ursprung Berkeley University TU Berlin
Apache Incubator 2013 2014
Top-Level-Projekt 2/2014 1/2015
Firma hinter dem Projekt Databricks Data Artisans
APIs Scala, Java, Python, R Java, Scala, Python
Implementiert in Scala Java
Cluster Standalone, Mesos, EC2, YARN Standalone, Mesos, EC2, YARN

Was ist Apache Spark?

Ursprünglich wurde Spark an der Berkeley University als Beispielapplikation für den dort entwickelten Ressourcen-Manager Mesos vorgestellt. Schnell stellte sich jedoch heraus, dass das Konzept mehr Aufmerksamkeit rechtfertigte. 2013 wurde Spark Teil des Incubator-Programms von Apache, in dem Projekte zeigen müssen, dass sie nach den Richtlinien der Open-Source-Organisation nachhaltig arbeiten. Im Februar 2014 erhielt die Technik dann die Weihen eines Top-Level-Projekts. Zu dem Zeitpunkt konnte das Framework bereits eine beeindruckende Anzahl Committer und Unterstützer aus der Wirtschaft vorweisen.

Im Vergleich zu MapReduce versprach Spark nicht nur eine um Faktor 100 schnellere Verarbeitung, sondern auch bessere Testbarkeit und höheren Entwicklungskomfort. Zudem war Spark von Anfang an modular konzipiert, sodass sich neben der Batch-Verarbeitung Streaming, Machine Learning und Graph Processing innerhalb des Frameworks umsetzen lassen. Besondere Bedeutung hat dabei die Stream-Verarbeitung, da man dafür bisher auf andere Tools wie Apache Storm zurückgreifen musste. Das ist gerade bei der Verwendung sogenannter Lambda-Architekturen wichtig, bei denen sich Daten sowohl über schnelle Streaming-Analysen als auch langsamere Batch-Prozesse verarbeiten lassen. Spark ermöglichte es, beides in einem Framework zu realisieren und die Datenströme zu kombinieren. Des Weiteren erlaubt es Spark interaktive Analysen durchzuführen, so kann man schnell die Daten kennenlernen und Prototypen von Analysen erstellen.

Was ist Apache Flink?

Auch Flink entstand an einer Universität, allerdings an einer deutschen, der TU Berlin. Es ging dort aus dem Forschungsprojekt Stratosphere hervor. Flink bietet ebenfalls mehrere Möglichkeiten der Datenverarbeitung: Batch, Streaming, Machine Learning und Graph Processing. Ein Unterschied ist aber die Ausrichtung. War der Fokus von Spark von Anfang an eine schnellere Batch-Verarbeitung, spezialisiert sich Flink auf die Verarbeitung von kontinuierlichen Datenströmen, also Stream Processing. Flink ist im April 2014 ins Incubator-Programm der Apache Software Foundation aufgenommen worden und wurde im Januar 2015 zum Top-Level-Projekt.

Flink hat derzeit noch weniger Committer als Spark zu verzeichnen, bekommt in letzter Zeit aber viel Schub. Zum einen ist dafür die vorteilhafte Performance im Vergleich zu Spark verantwortlich, zum anderen, dass viele Konzepte, die Spark erst noch einführt, in Flink von Anfang an vorhanden waren (etwa Back Pressure oder ein selbstverwalteter Off-Heap-Speicherbereich). Auch der Fokus auf Streaming ist für viele wichtig: Im Vergleich zu Storm bietet Flink bessere Performance, eine deutlich schlankere API und modernere Konzepte.