A short overview of features, pros and cons of Apache Storm and Spark Streaming in German.
Eine kurze Übersicht über features, Pro und Kontra des Einsatzes von Apache Storm und Spark Streaming
2. Vorstellung Apache Storm
Apache Storm
• Von Backtype entwickelt, von Twitter übernommen, nun
als Apache Projekt
• Definiert ein Netzwerk von Spouts (Streaming Quellen)
und Bolts (Processing – Einheiten), die frei in Topologies
kombinierbar und verkettbar sind.
• Basiert auf Zookeeper, mit einem JobTracker (Nimbus)
zur koordination und für fail over mediation.
• Alternativ werden Resourcen über YARN in einer
existierenden Hadoop Umgebung integriert
• Stream – Verarbeitung ist „garantiert“
• Spouts (Quellen) sind typischerweise Queue – Systeme,
für Kafka gibt es ein Implementierung
3. Use Case Evaluierung Storm
• ADP Event aus HDFS einlesen und in Kafka einspielen
• Storm-Kafka an topic subscriben und jeweils
• Eine (klassische) Storm Topology die Events verarbeiten lassen und
• Eine Trident Topology die Events verarbeiten lassen
• Aufbau eines Cluster in AWS mit
• Einem Master mit UI und Nimbus, sowie drei Worker
• Zwei Worker Nodes mit jeweils drei Worker
440 Mio. Events aus HDFS in Storm eingespielt.
Throughput bei 5600 events / sek (Limit bei Kafka Server / 100
Mbit/s interface)
Abschuss von einer Node im laufenden Betrieb ohne
Auswirkung auf die Verarbeitung, da dynamisches Rerouting
4. Vorstellung Streaming – Spark Streaming
Spark Streaming ist eine API aus der Spark Framework Familie und
wird von Databrix entwickelt.
• Anders als Storm oder Samza arbeitet Spark mit dem Konzept von
RDDs (resilient distributed data sets), gekapselte, ausführbare
collections von Datensätzen, die parallelisierbar sind.
• Bei RDDs wird grundsätzlich zwischen Transformationen (ähnlich wie
map bei MR) und Aktionen (reduce bei MR) unterschieden.
• Die Daten und Ihre Ausführung bilden dabei eine Einheit, die
segmentiert wird und parallel ausgeführt wird. Die Ausführung ist
grundsätzlich lazy, d.h. die Transformation wird erst dann ausgeführt,
wenn dessen Ausgabe von einer folgenden Aktion benötigt wird.
• Das ermöglich die dynamische Allokation von Ressourcen durch den
Resource Manager, typischerweise YARN oder Mesos.
• Spark Streaming ist eine Erweiterung von Spark, die es erlaubt
Streams an RDDs anzudocken. Unter anderem wird hier Kafka
unterstützt.
5. Use Case Evaluierung Spark Streaming
• ADP Event aus HDFS einlesen und in Kafka einspielen
• Setup einer Application, so wie bei Storm auch, die User-
Agents zählt
• Aufbau eines Cluster in AWS mit
• Einem Master mit einem Worker
• Zwei Worker Nodes mit jeweils einem Worker
• Läuft nur mit Kafka 0.8!
440 Mio. Events aus HDFS in Spark einspielen.
Throughput messen
Abschuss von einer Node im laufenden Betrieb
evaluieren
6. Pros and Cons Spark Streaming
• Für Spark Streaming spricht:
• Umfangreiche API mit vielen Funktionen
• Teil der Spark Plattform, für Data Science sehr relevant (z.B.
MLLib)
• Integration in Hadoop und Akka (Bei CDH5 in der Distribution
enthalten)
• Dagegen spricht:
• Die Java API ist absolut furchtbar, sinnvoll nur mit Scala einsetzbar
• Läuft nur mit Kafka 0.8
• Verarbeitung nicht garantiert, Kafka messages werden bei failures
nicht zurückgespult.
7. Pros and Cons - Storm
• Für Storm spricht:
• Extrem robust und erprobt
• Einfache Clusterverwaltung
• Einfache API
• Low - level Kafka Anbindung
• Only Once - Garantie mit Trident
• Dagegen spricht:
• Nicht integriert in Hadoop – Infrastruktur