Apache Spark vs Apache Storm
Il bisogno di streaming di dati in tempo reale sta crescendo esponenzialmente a causa dell’aumento dei dati in tempo reale. Con le tecnologie di streaming che guidano il mondo dei Big Data, potrebbe essere difficile per gli utenti scegliere la piattaforma di streaming in tempo reale appropriata. Due delle tecnologie in tempo reale più popolari che potrebbero essere prese in considerazione per optare sono Apache Spark e Apache Storm.
Una grande differenza chiave tra i framework Spark e Storm è che Spark esegue calcoli Data-Parallel, mentre Storm occupa calcoli Task-Parallel
Apache Spark
Apache Spark è un framework di tecnologia cluster-computing generica e veloce, usato per calcoli veloci su elaborazione dati su larga scala. Può gestire sia batch che analisi in tempo reale e carichi di lavoro per l’elaborazione dei dati.
Apache Storm
Apache Storm è un sistema di calcolo open-source, scalabile, tollerante agli errori e per l’elaborazione di flussi in tempo reale. È un framework per l’elaborazione dei dati distribuiti in tempo reale, che si concentra sull’elaborazione dei flussi o degli eventi. Può essere utilizzato con qualsiasi linguaggio di programmazione e può essere integrato utilizzando qualsiasi tecnologia di accodamento o database.
Differenze tra Spark e Storm
- Modello di elaborazione: Apache spark fornisce l’elaborazione batch mentre storm fornisce l’elaborazione micro batch
- Linguaggio di programmazione: Apache spark supporta meno lingue come Java, Scala mentre storm d’altra parte supporta più lingue, come Scala, Java, Clojure.
- Fonti di flusso: Apache ha usato HDFS mentre Apache Storm usa spout.
- Messaggistica: Apache apark usa Akka, Netty mentre Apache storm usa ZeroMQ, Netty
- Gestione delle risorse: Per Apache spark Yarn e Meson sono responsabili mentre per Apache storm Yarn e Mesos sono responsabili.
- Latenza: Latenza più alta rispetto ad Apache Spark mentre Apache storm fornisce una migliore bassa latenza con meno vincoli
- Primitivi di flusso: Apache spark usa DStream mentre Apache Storm usa Tuple, Partition
- Costo di sviluppo: Apache spark usa lo stesso codice per l’elaborazione batch e stream mentre in Apache storm non si può usare lo stesso codice.
- Persistenza: Apache spark usa per RDD mentre Apache storm usa MapState
- Tolleranza ai guasti: In Apache spark gestisce il riavvio dei lavoratori tramite il gestore delle risorse che può essere YARN, Mesos o il suo gestore autonomo mentre in Apache storm se il processo fallisce il processo supervisore lo riavvia automaticamente in quanto la gestione dello stato è gestita tramite zookeeper
- Provisioning: Apache spark supporta il monitoraggio di base usando Ganglia mentre Apache storm usa Apache Ambari
- Throughput: Apache spark serve 100k record per nodo al secondo mentre Apache storm serve 10k record per nodo al secondo.
- Gestione dello stato: Il cambiamento e il mantenimento dello stato in Apache Spark può essere aggiornato tramite UpdateStateByKey, ma nessuna strategia pluggable può essere applicata nel sistema esterno per l’implementazione dello stato. Mentre Storm non fornisce alcun framework per la memorizzazione di qualsiasi uscita del bullone di intervento come stato. Quindi, ogni applicazione deve creare uno stato per se stessa ogni volta che è necessario.
- Specialità: Apache spark usa l’elaborazione unificata (batch, SQL ecc.) mentre Apache storm usa RPC distribuiti
Apache Storm e Apache Spark sono ottime soluzioni che risolvono il problema dell’ingestione e trasformazione dello streaming.
Leggi tutto… http://entradasoft.com/blogs/apache-spark-vs-apache-storm