Apache Spark vs Apache Storm
Behovet for streaming af data i realtid vokser eksponentielt på grund af stigningen i realtidsdata. Med streamingteknologier, der fører an i Big Data-verdenen, kan det være svært for brugerne at vælge den rette realtidsstreamingplatform. To af de mest populære realtidsteknologier, som man kan overveje at vælge, er Apache Spark og Apache Storm.
En af de vigtigste forskelle mellem rammerne Spark og Storm er, at Spark udfører Data-Parallel-beregninger, mens Storm udfører Task-Parallel-beregninger
Apache Spark
Apache Spark er en generel, lynhurtig, klynge-computerteknologisk ramme, der anvendes til hurtig beregning af databehandling i stor skala. Det kan håndtere både batch- og realtidsanalyser og arbejdsbelastninger til databehandling.
Apache Storm
Apache Storm er et open source, skalerbart, fejltolerant og realtidsstream-behandlingssystem til beregning. Det er en ramme for distribueret databehandling i realtid, som fokuserer på strømbehandling eller hændelsesbehandling. Det kan bruges med ethvert programmeringssprog og kan integreres ved hjælp af enhver kø- eller databaseteknologi.
Differencer mellem Spark og Storm
- Behandlingsmodel: Apache spark giver batchbehandling, mens storm giver micro batchbehandling
- Programmeringssprog: Apache spark understøtter færre sprog som Java, Scala, mens storm på den anden side understøtter flere sprog, såsom Scala, Java, Clojure.
- Stream Kilder: Apache brugte HDFS, mens Apache Storm bruger spout.
- Messaging: Apache brugte HDFS, mens Apache Storm bruger spout.
- Messaging: Apache apark bruger Akka, Netty, mens Apache storm bruger ZeroMQ, Netty
- Ressourceforvaltning: Apache apark bruger Akka, Netty, mens Apache storm bruger ZeroMQ, Netty
- Ressourceforvaltning: For Apache spark er Yarn og Meson ansvarlige, mens for Apache storm er Yarn og Mesos ansvarlige.
- Latency: Apache Spark: Højere latenstid sammenlignet med Apache Spark, mens Apache storm giver bedre lav latenstid med færre begrænsninger
- Stream Primitives: Apache spark bruger DStream, mens Apache Storm bruger Tuple, Partition
- Udviklingsomkostninger: Apache spark bruger samme kode til batch- og streambehandling, mens samme kode ikke kan bruges i Apache storm.
- Persistens: Apache spark bruger per RDD, mens Apache storm bruger MapState
- Fejltolerance: Apache spark bruger per RDD, mens Apache storm bruger MapState
- Fejltolerance: I Apache spark håndteres genstart af arbejdere via ressourcemanager, som kan være YARN, Mesos eller dens selvstændige manager, mens i Apache storm, hvis processen fejler, vil supervisorprocessen genstarte den automatisk, da tilstandshåndtering håndteres via zookeeper
- Provisionering: Apache spark understøtter grundlæggende overvågning ved hjælp af Ganglia, mens Apache storm bruger Apache Ambari
- Gennemløb: Apache spark understøtter grundlæggende overvågning ved hjælp af Ganglia, mens Apache storm bruger Apache Ambari
- Gennemløb: Apache spark serverer 100k poster pr. knude pr. sekund, mens Apache storm serverer 10k poster pr. knude pr. sekund.
- Tilstandshåndtering: Apache spark serverer 100k poster pr. knude pr. sek: Det er muligt at opdatere den ændrede og vedligeholdende tilstand i Apache Spark via UpdateStateByKey, men der kan ikke anvendes nogen pluggable strategi i det eksterne system til implementering af tilstand. Storm tilbyder derimod ikke nogen ramme for lagring af et eventuelt mellemliggende boltoutput som en tilstand. Derfor skal hver applikation oprette en tilstand for sig selv, når det er nødvendigt.
- Specialitet: Apache Spark bruger forenet behandling (batch, SQL osv.), mens Apache Storm bruger distribueret RPC
Apache Storm og Apache Spark er gode løsninger, der løser problemet med streaming ingestion og transformation.
Læs mere… http://entradasoft.com/blogs/apache-spark-vs-apache-storm