Qualcuno può spiegare usando l'esempio di conteggio parole, perché Spark sarebbe più veloce di Map Reduce? rispostaPerché Spark è più veloce di Hadoop Map Riduci
risposta
di Bafna fornisce la memoria della storia, ma voglio aggiungere altri due fatti importanti: DAG e dell'ecosistema
- Spark utilizza "valutazione pigra" per formare un grafo orientato aciclico (DAG) di fasi di calcolo consecutive. In questo modo, il piano di esecuzione può essere ottimizzato, ad es. per ridurre al minimo la mescolanza di dati in giro. Al contrario, questo dovrebbe essere fatto manualmente in MapReduce sintonizzando ogni passo MR. (Sarebbe più facile capire questo punto se si ha familiarità con l'ottimizzazione del piano di esecuzione in RDBMS o l'esecuzione in stile DAG di Apache Tez)
- L'ecosistema Spark ha stabilito una pila versatile di componenti per gestire SQL, ML, Streaming, Attività di estrazione del grafico. Ma nell'ecosistema hadoop devi installare altri pacchetti per fare queste cose individuali.
e voglio aggiungere che, anche se i dati sono troppo grande per la memoria principale, è comunque possibile utilizzare scintilla scegliendo a persistere i tuoi dati su disco. Sebbene in questo modo si rinuncia ai vantaggi dell'elaborazione in memoria, è comunque possibile trarre vantaggio dall'ottimizzazione dell'esecuzione DAG.
Penso che ci siano tre ragioni principali.
Le due principali ragioni derivano dal fatto che, in genere, non viene eseguito un singolo lavoro MapReduce, ma piuttosto un insieme di lavori in sequenza.
Una delle principali limitazioni di MapReduce è che persiste il pieno set di dati di HDFS dopo aver eseguito ogni lavoro. Questo è molto costoso, perché comporta sia tre volte (per la replica) la dimensione del set di dati in I/O su disco e una quantità simile di I/O di rete. Spark ha una visione più olistica di una pipeline di operazioni. Quando l'output di un'operazione deve essere inserito in un'altra operazione, Spark passa i dati direttamente senza scrivere in memoria persistente. Questa è un'innovazione rispetto a MapReduce che proviene dalla carta Dryad di Microsoft e non è originale di Spark.
L'innovazione principale di Spark è stata l'introduzione di un'astrazione di memorizzazione nella cache in memoria. Ciò rende Spark ideale per carichi di lavoro in cui più operazioni accedono agli stessi dati di input. Gli utenti possono richiedere a Spark di memorizzare nella cache i set di dati di input, in modo che non debbano essere letti dal disco per ogni operazione.
E i lavori di Spark che si riducono a un singolo lavoro MapReduce? In molti casi anche questi funzionano più velocemente su Spark che su MapReduce. Il vantaggio principale che Spark ha qui è che può avviare le attività molto più velocemente. MapReduce avvia una nuova JVM per ogni attività, che può richiedere secondi con il caricamento di JAR, JIT, analisi XML di configurazione, ecc. Spark mantiene una JVM dell'esecutore in esecuzione su ciascun nodo, quindi avviare un'attività è semplicemente una questione di creare un RPC e passando un Runnable in un pool di thread, che contiene le singole cifre di millisecondi.
Infine, un comune malinteso probabilmente degno di nota è che in qualche modo scintilla corre interamente in memoria mentre MapReduce non è così. Questo semplicemente non è il caso. L'implementazione shuffle di Spark funziona in modo molto simile a quello di MapReduce: ogni record viene serializzato e scritto su disco sul lato mappa e poi recuperato e deserializzato sul lato di riduzione.
La migliore risposta, ora con la seconda versione di Spark, puoi anche menzionare un motore di tungsteno. Utilizza le ottimizzazioni bytecode non disponibili in MapReduce. – MaxNevermind
- 1. Hadoop Map Riduci: Algoritmi
- 2. Hadoop Map Riduci leggere un file di testo
- 3. Perché `(map digitToInt). show` è così veloce?
- 4. Mappa Hadoop/Riduci vs Mappa incorporata/Riduci
- 5. Il framework Mongodb Aggregation è più veloce di map/reduce?
- 6. Qual è il modo più semplice per spiegare Che cos'è Hadoop e Mappa/Riduci?
- 7. Perché Object.keys è più veloce di hasOwnProperty?
- 8. Perché Crystal è più veloce di Ruby?
- 9. Perché file_get_contents è più veloce di memcache_get?
- 10. Perché HashMap è più veloce di HashSet?
- 11. Perché ToUpperInvariant() è più veloce di ToLowerInvariant()?
- 12. Perché emplace_back è più veloce di push_back?
- 13. Perché Array.reverse_each è più veloce di Array.reverse.each
- 14. Perché è .index più veloce di .all?
- 15. Perché String.IsNullOrEmpty è più veloce di String.Length?
- 16. Map/ArrayList: quale è più veloce per cercare un elemento
- 17. panda di pitone: perché la mappa è più veloce?
- 18. Funzionalità Hadoop DistributedCache in Spark
- 19. Pig vs Hive vs Native Map Riduci
- 20. Mongo Map Riduci la prima volta
- 21. Perché mmap() è più veloce dell'IO sequenziale?
- 22. Perché questo codice assembly è più veloce?
- 23. Quale è più veloce e perché?
- 24. È `estendi` più veloce di` + = `?
- 25. Hadoop e map-reduce su macchine multicore
- 26. Qual è il rapporto tra Spark, Hadoop e Cassandra
- 27. Perché un'unione è più veloce di un gruppo di
- 28. Perché Hadoop non è implementato usando MPI?
- 29. Perché l'emulatore iOS è molto più veloce di Android?
- 30. Perché MSMQ è più veloce di QueueService WCF?
possibile duplicato di [Perché Spark è veloce quando il conteggio delle parole?] (Http://stackoverflow.com/questions/28850952/why-is-spark-fast-when-word-count) – zero323
Un altro possibile duplicato [È il caching l'unico vantaggio della scintilla sulla mappa-ridurre?] (http://stackoverflow.com/questions/24705724/is-caching-the-only-advantage-of-spark-over-map-reduce) – zaxliu