Apache Spark vs. Apache Storm
Der Bedarf an Echtzeit-Daten-Streaming wächst exponentiell aufgrund der Zunahme von Echtzeit-Daten. Da Streaming-Technologien in der Welt von Big Data führend sind, könnte es für die Benutzer schwierig sein, die geeignete Echtzeit-Streaming-Plattform zu wählen. Zwei der populärsten Echtzeit-Technologien, die für eine Entscheidung in Frage kommen, sind Apache Spark und Apache Storm.
Ein wesentlicher Unterschied zwischen den Frameworks Spark und Storm besteht darin, dass Spark datenparallele Berechnungen durchführt, während Storm aufgabenparallele Berechnungen durchführt
Apache Spark
Apache Spark ist ein universelles, blitzschnelles Cluster-Computing-Technologie-Framework, das für schnelle Berechnungen bei der Verarbeitung großer Datenmengen eingesetzt wird. Es kann sowohl Batch- als auch Echtzeit-Analysen und Datenverarbeitungs-Workloads verwalten.
Apache Storm
Apache Storm ist ein skalierbares, fehlertolerantes Open-Source-Rechnersystem für die Stream-Verarbeitung in Echtzeit. Es ist ein Framework für verteilte Datenverarbeitung in Echtzeit, das sich auf Stream Processing oder Event Processing konzentriert. Es kann mit jeder Programmiersprache verwendet werden und lässt sich mit jeder Warteschlangen- oder Datenbanktechnologie integrieren.
Unterschiede zwischen Spark und Storm
- Verarbeitungsmodell: Apache Spark bietet Stapelverarbeitung, während Storm Mikrostapelverarbeitung bietet
- Programmiersprache: Apache Spark unterstützt weniger Sprachen wie Java, Scala, während Storm auf der anderen Seite mehrere Sprachen wie Scala, Java, Clojure unterstützt.
- Stream-Quellen: Apache verwendet HDFS, während Apache Storm Spout verwendet.
- Messaging: Apache apark verwendet Akka, Netty, während Apache storm ZeroMQ, Netty
- Ressourcenmanagement verwendet: Für Apache spark sind Yarn und Meson zuständig, während für Apache storm Yarn und Mesos zuständig sind.
- Latenz: Höhere Latenz im Vergleich zu Apache Spark, während Apache Storm eine bessere niedrige Latenz mit geringeren Einschränkungen bietet
- Stream Primitives: Apache Spark verwendet DStream, während Apache Storm Tuple, Partition verwendet
- Entwicklungskosten: Apache Spark verwendet den gleichen Code für Batch- und Stream-Verarbeitung, während in Apache Storm nicht der gleiche Code verwendet werden kann
- Persistenz: Apache Spark verwendet pro RDD, während Apache Storm MapState verwendet
- Fehlertoleranz: In Apache Spark wird der Neustart von Workern über einen Ressourcenmanager abgewickelt, der YARN, Mesos oder ein eigenständiger Manager sein kann, während in Apache Storm bei einem Prozessausfall der Supervisor-Prozess automatisch neu gestartet wird, da die Zustandsverwaltung über Zookeeper erfolgt
- Provisioning: Apache Spark unterstützt grundlegende Überwachung mit Ganglia, während Apache Storm Apache Ambari
- Durchsatz verwendet: Apache Spark bedient 100k Datensätze pro Knoten pro Sekunde, während Apache Storm 10k Datensätze pro Knoten pro Sekunde bedient.
- Zustandsverwaltung: Die Änderung und Aufrechterhaltung des Zustands in Apache Spark kann über UpdateStateByKey aktualisiert werden, aber es kann keine steckbare Strategie im externen System für die Implementierung des Zustands angewendet werden. Storm hingegen bietet kein Framework für die Speicherung von zwischengeschalteten Bolt-Ausgaben als Zustand. Daher muss jede Anwendung bei Bedarf einen Zustand für sich selbst erstellen.
- Besonderheit: Apache Spark verwendet eine einheitliche Verarbeitung (Batch, SQL usw.), während Apache Storm eine verteilte RPC verwendet
Apache Storm und Apache Spark sind großartige Lösungen, die das Streaming-Ingestion- und Transformationsproblem lösen.
Weiterlesen… http://entradasoft.com/blogs/apache-spark-vs-apache-storm