2013-05-22 12 views
10

Sto lavorando su Spark (Berkeley) Cluster Computing System. Durante le mie ricerche, ho appreso alcuni altri sistemi in-memory come Redis, Memcachedb, ecc. Sarebbe bello se qualcuno potesse darmi un confronto tra SPARK e REDIS (e MEMCACHEDB). In quali scenari Spark ha un vantaggio rispetto a questi altri sistemi in-memory?Confronto nei sistemi di calcolo cluster in memoria

risposta

30

Sono completi bestie diverse.

Redis e memcachedb sono negozi distribuiti. Redis è un puro sistema in memoria con persistenza opzionale con varie strutture di dati. Memcachedb fornisce un'API memcached su Berkeley-DB. In entrambi i casi, è più probabile che vengano utilizzati dalle applicazioni OLTP o, eventualmente, per semplici analisi in tempo reale (aggregazione al volo di dati).

Sia Redis che memcachedb non dispongono di meccanismi per un'iterazione efficiente dei dati memorizzati in parallelo. Non è possibile eseguire facilmente la scansione e applicare alcune elaborazioni ai dati memorizzati. Non sono progettati per questo. Inoltre, ad eccezione dell'utilizzo dello sharding manuale sul lato client, non è possibile ridimensionarlo in un cluster (è comunque in corso un'implementazione del cluster Redis).

Spark è un sistema per accelerare i lavori di analisi su larga scala (e soprattutto quelli iterativi) fornendo set di dati distribuiti in memoria. Con Spark, è possibile implementare una mappa iterativa efficiente/ridurre i lavori su un cluster di macchine.

Redis e Spark si affidano entrambi alla gestione dei dati in memoria. Ma Redis (e memcached) giocano nello stesso campo degli altri negozi NoSQL di OLTP, mentre Spark è piuttosto simile a una mappa Hadoop/sistema di riduzione.

Redis è in grado di eseguire numerose operazioni di archiviazione/recupero rapido con un throughput elevato con latenza inferiore al millisecondo. Spark brilla nell'implementazione di algoritmi iterativi su larga scala per l'apprendimento automatico, l'analisi del grafo, il data mining interattivo, ecc. Su un volume significativo di dati.

Aggiornamento: ricevere altre informazioni su Tempesta

La domanda è quello di confrontare Spark per Tempesta (vedi commenti qui sotto).

Spark è ancora basato sull'idea che, quando il volume di dati esistente è enorme, è più economico spostare il processo sui dati, anziché spostare i dati nel processo. Ogni nodo memorizza (o memorizza nella cache) il proprio set di dati e i lavori vengono inviati ai nodi. Quindi il processo passa ai dati. È molto simile a Hadoop map/reduce, ad eccezione del fatto che la memoria viene utilizzata in modo aggressivo per evitare I/O che lo rende efficiente per algoritmi iterativi (quando l'output del passo precedente è l'input del passaggio successivo). Shark è solo un motore di query costruito su Spark (che supporta query analitiche ad-hoc).

Puoi vedere Storm come l'opposto architettonico completo di Spark. Storm è un motore di streaming distribuito. Ogni nodo implementa un processo di base e gli elementi di dati fluiscono dentro/fuori una rete di nodi interconnessi (contrariamente a Spark). Con Storm, i dati passano al processo.

Entrambi i framework sono utilizzati per parallelizzare i calcoli di una grande quantità di dati.

Tuttavia, Storm è in grado di elaborare dinamicamente numerosi elementi di dati di piccole dimensioni generati/raccolti (come il calcolo di alcune funzioni di aggregazione o analisi in tempo reale su uno stream di Twitter).

Spark si applica a un corpus di dati esistenti (come Hadoop) che è stato importato nel cluster Spark, fornisce funzionalità di scansione veloci a causa della gestione in memoria e riduce al minimo il numero globale di I/O per algoritmi iterativi.

+2

Che dire di Storm? Come puoi confrontarlo con Spark (o Shark)? – void

+0

Vedere il mio aggiornamento ... –

+0

Grazie per l'aggiornamento. C'è un'altra domanda se non ti dispiace. Spark ha lo strumento "Spark Streaming" per analisi in tempo reale. È paragonabile a Storm (un altro strumento di analisi in tempo reale)? Ci sono dei vantaggi? – void

Problemi correlati