2014-06-09 18 views
270

Quali sono le differenze tra Apache Spark e Apache Storm? Quali sono i casi d'uso adatti per ognuno?Apache Spark vs. Apache Storm

+10

@ MC110: Sia supporto per l'elaborazione in tempo reale. Mentre Storm supporta i dati in movimento, Spark supporta i dati a riposo. Cos'altro? – anhldbk

+4

questo link lo riassume bene https://dzone.com/articles/streaming-big-data-storm-spark –

risposta

421

Apache Spark è una piattaforma di analisi dei dati distribuita in memoria, destinata principalmente ad accelerare i lavori di analisi batch, i lavori iterativi di apprendimento automatico, l'interrogazione interattiva e l'elaborazione dei grafici.

Una delle principali distinzioni di Spark è l'uso di RDD o di set di dati distribuiti resilienti. Gli RDD sono ottimi per la pipeline di operatori paralleli per il calcolo e sono, per definizione, immutabili, il che consente a Spark una forma unica di tolleranza agli errori basata sulle informazioni di derivazione. Se sei interessato, ad esempio, all'esecuzione di un lavoro Hadoop MapReduce molto più veloce, Spark è una grande opzione (anche se i requisiti di memoria devono essere considerati).

Apache Storm si concentra sull'elaborazione del flusso o su ciò che alcuni chiamano elaborazione di eventi complessi. Storm implementa un metodo fault tolerant per eseguire un calcolo o sottoporre a pipeline più calcoli su un evento mentre scorre in un sistema. Si potrebbe usare Storm per trasformare i dati non strutturati mentre fluiscono in un sistema in un formato desiderato.

Storm and Spark si concentrano su casi d'uso abbastanza diversi. Il confronto più "mele-mele" sarebbe tra Storm Trident e Spark Streaming. Poiché gli RDD di Spark sono intrinsecamente immutabili, Spark Streaming implementa un metodo per il "batching" degli aggiornamenti in arrivo in intervalli di tempo definiti dall'utente che vengono trasformati nei propri RDD. Gli operatori paralleli di Spark possono quindi eseguire calcoli su questi RDD. Questo è diverso da Storm che si occupa di ogni evento individualmente.

Una differenza chiave tra queste due tecnologie è che Spark esegue Data-Parallel computations mentre Storm esegue Task-Parallel computations. O il design rende i compromessi che vale la pena conoscere. Suggerirei di controllare questi collegamenti.

Edit: scoperto this oggi

+4

Buona spiegazione. L'articolo menzionato è buono http://xinhstechblog.blogspot.in/2014/06/storm-vs -spark-streaming-side-by-side.html – minhas23

+0

Il link non risponde per me. Eccolo dalla cache di google: http://webcache.googleusercontent.com/search?q=cache:yl9B_lZ5u9EJ:xinhstechblog.blogspot.com/2014/06/storm-vs-spark-streaming-side-by-side.html+ & cd = 1 & hl = ru & ct = clnk & gl = ru – asdfasdfads

+0

Eccellente link di confronto side-by-side. Da notare per gli sviluppatori di Scala: Storm è implementato in Closure, mentre Spark è implementato in Scala. –