Apache Flink vs. Spark – Wird der eine den anderen überholen?

Letzte Aktualisierung: 25 Jan 2021

Apache Spark und Apache Flink sind beides quelloffene, verteilte Verarbeitungsframeworks, die entwickelt wurden, um die Latenzen von Hadoop Mapreduce bei der schnellen Datenverarbeitung zu reduzieren. Es ist ein weit verbreiteter Irrglaube, dass Apache Flink Spark ersetzen wird, oder ist es möglich, dass diese beiden Big-Data-Technologien nebeneinander existieren und dabei ähnliche Anforderungen an eine fehlertolerante, schnelle Datenverarbeitung erfüllen können. Jemandem, der mit keiner der beiden Technologien gearbeitet hat und nur mit Hadoop vertraut ist, mögen Apache Spark und Flink ähnlich erscheinen, und es liegt auf der Hand, dass er die Entwicklung von Apache Flink für weitgehend überflüssig halten wird. Aber Flink hat es geschafft, sich im Spiel zu behaupten, weil es mit seiner Stream-Verarbeitungsfunktion Zeilen über Zeilen von Daten in Echtzeit verarbeiten kann – was bei der Stapelverarbeitungsmethode von Apache Spark nicht möglich ist. Das macht Flink schneller als Spark.

Dieser IBM-Studie zufolge erzeugen wir jeden Tag etwa 2,5 Quintillionen Bytes an Daten – und diese Rate der Datenerzeugung steigt weiterhin in einem noch nie dagewesenen Tempo. Um die Dinge in eine andere Perspektive zu rücken: Etwa 90 % aller auf der Welt existierenden Daten wurden in den letzten zwei Jahren erzeugt, obwohl das World Wide Web der Öffentlichkeit schon seit weit über zwei Jahrzehnten zugänglich ist. Mit dem Wachstum des Internets wuchs auch die Zahl der Nutzer, und die ständig steigende Nachfrage nach Inhalten ebnete im letzten Jahrzehnt den Weg für das Web 2.0. Es war das erste Mal, dass Nutzer ihre eigenen Daten im Internet erstellen durften, die dann von einem datenhungrigen Publikum konsumiert werden konnten.

Dann waren die sozialen Medien an der Reihe, in unser Leben einzudringen. Laut dem wersm-Bericht (we are social media) erhält Facebook mehr als 4 Millionen Likes in einer Minute! Die von anderen beliebten Quellen erzeugten Daten werden in der Infografik (die der gleichen wersm-Studie entnommen ist) erwähnt, bevor wir einen Blick darauf werfen, wie diese Daten verbraucht werden.

Big Data Facts and Figures Infographic

„Wie speichert man diese enormen Datenmengen?“ war eine Problemstellung, die die Technikfreaks den größten Teil des vergangenen Jahrzehnts beschäftigt hat. Das plötzliche Aufkommen der sozialen Medien machte ihre Aufgaben nicht einfacher. Neuzeitliche Speicherlösungen wie das Cloud Computing haben die Branche jedoch revolutioniert und die bestmögliche Lösung präsentiert. In diesem Jahrzehnt hat sich die Problemstellung auf die Frage „Was tun mit riesigen Datenmengen?“ verlagert. Data Analytics wurde zum ultimativen Ziel, aber vorher muss eine Menge Arbeit geleistet werden, um Daten, die in verschiedenen Formaten in verschiedenen Quellen gespeichert sind, zu integrieren und für die Verarbeitung und Analyse vorzubereiten, was eine anspruchsvolle Aufgabe ist.

Für eine vollständige Liste von Big-Data-Unternehmen und ihren Gehältern – KLICKEN SIE HIER

Unsere beiden Themen für heute – Apache Spark und Apache Flink – versuchen, diese Frage und mehr zu beantworten.

Apache Spark vs. Flink

Apache Spark

Spark ist ein quelloffenes Cluster-Computing-Framework, das weltweit eine große Benutzerbasis hat. Es ist in Scala, Java, R und Python geschrieben und bietet Programmierern eine Anwendungsprogrammierschnittstelle (API), die auf einem fehlertoleranten, nur lesbaren Multiset von verteilten Datenelementen basiert. In der kurzen Zeit von zwei Jahren seit seiner ersten Veröffentlichung (Mai 2014) hat es eine breite Akzeptanz für Echtzeit-, In-Memory- und fortgeschrittene Analysen erfahren – aufgrund seiner Geschwindigkeit, Benutzerfreundlichkeit und der Fähigkeit, anspruchsvolle analytische Anforderungen zu bewältigen.

Apache Spark Training Online

Wenn Sie weitere Informationen über Big Data-Karrieren wünschen, klicken Sie bitte auf die orangefarbene Schaltfläche „Info anfordern“ oben auf dieser Seite.

Vorteile von Spark

Apache Spark hat mehrere Vorteile gegenüber traditionellen Big Data- und MapReduce-basierten Technologien. Die wichtigsten davon sind. Es hebt MapReduce im Wesentlichen auf die nächste Stufe mit einer um ein Vielfaches schnelleren Leistung. Eines der wichtigsten Unterscheidungsmerkmale von Spark ist die Fähigkeit, Zwischenergebnisse selbst im Speicher zu halten, anstatt sie auf die Festplatte zurückzuschreiben und wieder von dort zu lesen, was für iterationsbasierte Anwendungsfälle entscheidend ist.

  • Geschwindigkeit – Spark kann Stapelverarbeitungsaufträge 10 bis 100 Mal schneller als MapReduce ausführen. Das bedeutet nicht, dass es hinterherhinkt, wenn Daten auf die Festplatte geschrieben (und von dort geholt) werden müssen, denn es ist der Weltrekordhalter für groß angelegte Sortierung auf der Festplatte.
  • Benutzerfreundlichkeit – Apache Spark verfügt über benutzerfreundliche APIs, die für die Arbeit mit großen Datensätzen entwickelt wurden.
  • Einheitliche Engine – Spark kann auf Hadoop ausgeführt werden, indem es dessen Clustermanager (YARN) und den zugrunde liegenden Speicher (HDFS, HBase usw.) nutzt. Es kann jedoch auch unabhängig von Hadoop laufen und mit anderen Cluster-Managern und Speicherplattformen (wie Cassandra und Amazon S3) zusammenarbeiten. Es verfügt auch über Bibliotheken auf höherer Ebene, die SQL-Abfragen, Daten-Streaming, maschinelles Lernen und Graphenverarbeitung unterstützen.
  • Wählen Sie aus Java, Scala oder Python – Spark bindet Sie nicht an eine bestimmte Sprache und lässt Sie aus den gängigen Sprachen wie Java, Scala, Python, R und sogar Clojure wählen.
  • Gemeinsame Nutzung von Daten im Speicher – Verschiedene Jobs können Daten im Speicher gemeinsam nutzen, was es zu einer idealen Wahl für iterative, interaktive und ereignisgesteuerte Verarbeitungsaufgaben macht.
  • Aktive, wachsende Benutzergemeinschaft – Eine aktive Benutzergemeinschaft hat dazu geführt, dass Spark innerhalb von zwei Jahren nach seiner ersten Veröffentlichung eine stabile Version (im Juni 2016) veröffentlicht hat. Dies spricht Bände über die weltweit steigende Akzeptanz von Spark.

Apache Flink

Apache Flink ist der jüngste Neuzugang in der Liste der Open-Source-Frameworks, die sich auf Big Data Analytics konzentrieren und versuchen, das alternde MapReduce von Hadoop zu ersetzen, genau wie Spark. Die erste API-stabile Version von Flink wurde im März 2016 veröffentlicht und ist wie Spark für die In-Memory-Verarbeitung von Batch-Daten konzipiert. Dieses Modell ist besonders praktisch, wenn dieselben Daten wiederholt verarbeitet werden müssen. Dies macht es zu einem idealen Kandidaten für maschinelles Lernen und andere Anwendungsfälle, die adaptives Lernen, selbstlernende Netzwerke usw. erfordern. Mit dem unvermeidlichen Boom des Internet of Things (IoT) hat die Flink-Benutzergemeinschaft einige spannende Herausforderungen vor sich.

Vorteile von Flink

  • Tatsächliche Stream-Processing-Engine, die sich der Stapelverarbeitung annähern kann, anstatt umgekehrt zu sein.
  • Bessere Speicherverwaltung – Die explizite Speicherverwaltung beseitigt die gelegentlichen Spitzen, die im Spark-Framework zu finden sind.
  • Geschwindigkeit – Es ermöglicht schnellere Geschwindigkeiten, indem es die iterative Verarbeitung auf demselben Knoten stattfinden lässt, anstatt sie unabhängig voneinander im Cluster laufen zu lassen. Die Leistung kann weiter optimiert werden, indem nur der Teil der Daten neu verarbeitet wird, der sich geändert hat, und nicht der gesamte Datensatz. Es bietet einen bis zu fünffachen Geschwindigkeitszuwachs im Vergleich zum Standardverarbeitungsalgorithmus.
  • Weniger Konfiguration

Apache Flink vs. Spark

Als Flink aufkam, war Apache Spark bereits das De-facto-Framework für schnelle In-Memory-Big-Data-Analysen für eine Reihe von Unternehmen weltweit. Dies ließ Flink als überflüssig erscheinen. Warum sollte man eine weitere Datenverarbeitungs-Engine benötigen, wenn die bestehende noch nicht ausgereift war? Man muss tiefer in die Fähigkeiten von Flink eindringen, um zu erkennen, was es von anderen unterscheidet, obwohl einige Analysten es als das „4G der Datenanalyse“ bezeichnet haben.

Tief in den Einstellungen von Spark eingebettet ist eine kleine Schwäche, die Flink ins Visier genommen hat und versucht, daraus Nutzen zu ziehen. Auch wenn es für den Zweck einer lockeren Diskussion richtig ist, ist Spark keine reine Stream-Processing-Engine. Wie Ian Pointer in dem InfoWorld-Artikel „Apache Flink: New Hadoop contender squares off against Spark“, ist Spark im Wesentlichen eine schnelle Batch-Operation, die nur einen kleinen Teil der eingehenden Daten während einer Zeiteinheit verarbeitet. In der offiziellen Dokumentation von Spark wird dies als „Micro-Batching“ bezeichnet. Es ist unwahrscheinlich, dass dieses Problem eine praktische Bedeutung für den Betrieb hat, es sei denn, der Anwendungsfall erfordert eine niedrige Latenz (Finanzsysteme), wo Verzögerungen in der Größenordnung von Millisekunden erhebliche Auswirkungen haben können. Abgesehen davon befindet sich Flink noch in der Entwicklung und kann noch nicht den Anspruch erheben, Spark zu ersetzen.

Flink ist ein Stream-Processing-Framework, das die Aufgaben ausführen kann, die eine Batch-Verarbeitung erfordern, so dass Sie die Möglichkeit haben, denselben Algorithmus in beiden Modi zu verwenden, ohne auf eine Technologie wie Apache Storm zurückgreifen zu müssen, die eine niedrige Latenzzeit erfordert.

Sowohl Spark als auch Flink unterstützen In-Memory-Verarbeitung, was ihnen einen deutlichen Geschwindigkeitsvorteil gegenüber anderen Frameworks verschafft. Wenn es um die Echtzeitverarbeitung eingehender Daten geht, kann Flink nicht mit Spark mithalten, obwohl es in der Lage ist, Echtzeitverarbeitungsaufgaben auszuführen.

Spark und Flink können beide iterative In-Memory-Verarbeitung durchführen. Wenn es um Geschwindigkeit geht, hat Flink die Oberhand, da es so programmiert werden kann, dass es nur die Daten verarbeitet, die sich geändert haben, und damit Spark überlegen ist.

Wachstumsgeschichten – Spark und Flink

Jedes Software-Framework braucht mehr als nur technisches Know-how, um Unternehmen zu helfen, den größtmöglichen Nutzen zu erzielen. In diesem Abschnitt befassen wir uns mit dem Artikel „Apache Spark 2015 Year in Review“ von Databricks, um zu sehen, wie es sich in der globalen Gemeinschaft der Nutzer und Entwickler entwickelt hat. Im Laufe des Jahres wurden 4 Versionen (1.3 bis 1.6) veröffentlicht, die jeweils Hunderte von Korrekturen zur Verbesserung des Frameworks enthielten. Was uns aufgefallen ist, ist die wachsende Zahl der beitragenden Entwickler – von 500 im Jahr 2014 auf über 1000 im Jahr 2015! Eine weitere bemerkenswerte Eigenschaft von Spark ist die Leichtigkeit, mit der die Nutzer auf die neuen Versionen umsteigen. In dem Bericht wird erwähnt, dass die Mehrheit der Nutzer innerhalb von drei Monaten auf die neueste Version umsteigt. Dies untermauert den Ruf von Spark als das am aktivsten entwickelte (und angenommene) Open-Source-Datentool.

Flink ist relativ spät ins Rennen gegangen, aber der Jahresrückblick 2015 auf der offiziellen Website zeigt, warum es das vollständigste verfügbare Open-Source-Framework für die Stream-Verarbeitung ist und bleiben wird. Das Github-Repository von Flink (Get the Repository – Here) zeigt, dass sich die Größe der Community im Jahr 2015 verdoppelt hat – von 75 auf 150 Mitwirkende. Die Zahl der Repository-Forks hat sich in diesem Jahr mehr als verdreifacht, ebenso wie die Zahl der Stars des Repositorys. Ausgehend von Berlin, Deutschland, ist die Nutzergemeinschaft über Kontinente hinweg bis nach Nordamerika und Asien gewachsen. Ein weiterer Meilenstein für Flink war die Flink Forward Conference mit über 250 Teilnehmern, zu der mehr als 100 Teilnehmer aus der ganzen Welt anreisten, um technische Vorträge von Unternehmen wie Google, MongoDB, Telecom, NFLabs, RedHat, IBM, Huawei, Ericsson, Capital One, Amadeus und vielen anderen zu hören.

Auch wenn es noch zu früh ist, um eines dieser beiden Systeme als klaren Gewinner auszumachen, sind wir der Ansicht, dass es für die Tech-Welt besser wäre, wenn neue Anbieter unterschiedliche Dinge tun und die bestehenden ergänzen würden, anstatt mit ihnen zu konkurrieren, anstatt viele Frameworks zu haben, die das Gleiche tun.

Apache Spark Online Training

VORHERIGES

NACHHER