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
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.
- 1. Segmentazione della memoria nei moderni sistemi operativi
- 2. AspectJ tessitura del tempo di caricamento nei sistemi di produzione
- 3. Foglio di calcolo Google SOMMA Confronto dati
- 4. Accesso al progetto django nei sistemi LAN
- 5. Che cos'è CRDT nei sistemi distribuiti?
- 6. Gestione dello stack overflow nei sistemi incorporati
- 7. Confronto dell'accesso alla memoria
- 8. Ricerca di problemi di latenza (bancarelle) nei sistemi Linux incorporati
- 9. Confronto delle date nei binari
- 10. malloc in sistemi embedded
- 11. Confronto di memoria (con posizione differenza)
- 12. Confronto di memoria, che è più veloce?
- 13. Cluster di cluster Networkx
- 14. Cluster Computing in Go
- 15. Calcolo dell'utilizzo della memoria di un B-Tree in Java
- 16. Sistemi distribuiti, miglior framework?
- 17. Svantaggi di Spark Streaming in confronto con i sistemi di streaming reale Real
- 18. Android - Comportamento attività asincrona nei sistemi operativi 2.3.3 e 4.0
- 19. Differenza tra latenza e jitter nei sistemi operativi
- 20. I grandi sistemi usano chiavi esterne nei loro database?
- 21. Come aumentare la memoria RAM per il cluster in couchbase?
- 22. Perdita di memoria Perl nei thread (thread non rilasciano memoria)
- 23. Quali vantaggi offre OLAP in memoria rispetto ai sistemi tradizionali con memoria significativa?
- 24. Rilevare perdite di memoria nei programmi C?
- 25. Serializzazione JSON veloce (e confronto con Pickle) per il cluster computing in Python?
- 26. Redis Cluster vs ZeroMQ in Pub/Sub, per sistemi distribuiti scalati orizzontalmente
- 27. Quali sistemi operativi non liberano memoria all'uscita dal programma?
- 28. indice cluster in Django
- 29. sviluppo sistemi di sorveglianza dvr in iphone
- 30. Calcolo quaternione per la trasformazione tra 2 cartesiano 3D sistemi di coordinate
Che dire di Storm? Come puoi confrontarlo con Spark (o Shark)? – void
Vedere il mio aggiornamento ... –
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