MapReduce: Simplified Data Processing on Large Clusters
-
Upload
giovanni-grano -
Category
Software
-
view
249 -
download
1
Transcript of MapReduce: Simplified Data Processing on Large Clusters
MapReduce: Simplified Data Processing on LargeClusters
Jeffrey Dean and Sanjay Ghemawat
Giovanni Grano Gino Farisano
Universita degli Studi di Salerno
A.A. 2014/2015Corso di Sistemi Operativi Avanzati
G.G, G.F. MapReduce A.A. 2014/2015 1 / 42
Outline
1 Obiettivi
2 Implementazione
3 Raffinamenti
4 Performance
5 Conclusioni
G.G, G.F. MapReduce A.A. 2014/2015 2 / 42
Obiettivi
Obiettivi (1)
Negli anni, diversi autori hanno implementato centinaia di modelli dicomputazione special-purpose per grosse moli di dati
Caratteristiche:
Computazione lineare che ha bisogno di essere distribuita su centinaiadi macchine
Grossa mole di raw data
Sfida: parallelizzare la computazione, distribuire i dati, gestire lefailure nascondendo la complessita del codice per rispondere a questiproblemi!
G.G, G.F. MapReduce A.A. 2014/2015 3 / 42
Obiettivi
Obiettivi (2)
Approccio: Astrazione che permette di gestire computazioni semplicinascondendo i dettagli confusionari su parallelizzazione,fault-tollerance, distribuzione dei dati e load balancing!
Primitive map e reduce presenti in Lisp e in altri linguaggi funzionali
Interfaccia semplice e potente che ci fornisce:
parallelizzazione automatica
computazione distribuita su larga scala
alte performance su grossi cluster di commodity PC
G.G, G.F. MapReduce A.A. 2014/2015 4 / 42
Implementazione
1 Obiettivi
2 Implementazione
3 Raffinamenti
4 Performance
5 Conclusioni
G.G, G.F. MapReduce A.A. 2014/2015 5 / 42
Implementazione
Environment
Google Environment: grandi cluster di commodity PC connessi conswitch Ethernet
Macchine Linux dual x86 processor, con 2-4 GB di memoria
Commodity networking hardware: 100 megabits/s
Cluster composti da centinaia o migliaia di macchine! Failure comuni
Storage con dischi IDE economici sulle singole macchine. File systemdistribuito (GFS) sviluppato direttamente in-house
G.G, G.F. MapReduce A.A. 2014/2015 6 / 42
Implementazione
Esecuzione (1)
1 La libreria di MapReducesplitta i files di input inM pezzi, (16-64MB perpezzo). Avvia le diversecopie del programmasulle macchine delcluster
G.G, G.F. MapReduce A.A. 2014/2015 7 / 42
Implementazione
Esecuzione (2)
2 Una copia delprogramma e il master.Le restanti sono workersa cui viene assegnato illavoro dal master. Cisono M map task e Rreduce task daassegnare.Il masterprende gli idle workers eassegna loro un map e/oun reduce task
G.G, G.F. MapReduce A.A. 2014/2015 8 / 42
Implementazione
Esecuzione (3)
3 Un worker con un maptask legge il contenutodell’input splitcorrispondente. Prendele coppie chiave/valoredegli input data e lipassa alla funzione dimap. Le coppieintermedie prodotte sonobufferizzate in memoria
G.G, G.F. MapReduce A.A. 2014/2015 9 / 42
Implementazione
Esecuzione (4)
4 Periodicamente le coppieintermedie sono scrittesui dischi locali. Questelocazioni sono passate almaster che eresponsabile del forwardverso i reduce workers
G.G, G.F. MapReduce A.A. 2014/2015 10 / 42
Implementazione
Esecuzione (5)
5 Quando notificato dalmaster, il reduce workerlegge tramite RPC i datidai dischi locali dei mapworkers. Ordina i datisulla chiave intermedia,in modo che tutte leoccorrenze della stessachiave siano raggruppate
G.G, G.F. MapReduce A.A. 2014/2015 11 / 42
Implementazione
Esecuzione (6)
6 Il reduce worker itera suidati intermedi e per ognichiave univoca passa icorrispondenti valori allafunzione di reduce.L’output e concatenatoal file di output finaleper quel reduce
G.G, G.F. MapReduce A.A. 2014/2015 12 / 42
Implementazione
Master Data Structures
Il master mantiene una serie di strutture dati
Per ogni map task e reduce task conserva lo stato (idle, in-progess,completed) e l’ID della macchina worker
Per ogni map task completo, conserva la locazione e la dimensionedei file intermedi prodotti dal map task
Queste informazioni sono fornite in maniera incrementale ai workersche hanno reduce task in-progress
G.G, G.F. MapReduce A.A. 2014/2015 13 / 42
Implementazione
Fault ToleranceWorker Failure
Il master pinga ogni worker periodicamente. Se non ottiene rispostadopo un tot di tempo marca il worker come failed
Ogni map task completato e resettato allo stato iniziale di idle ed eschedulabile sugli altri workers
Output salvato sui dischi locali che potrebbero essere non accessibili.
Anche i map e reduce task in progress vengono resettati allo stato diidle
I reduce task completati non hanno bisogno di essere ri-schedulati inquanto l’output e salvato nel global file system
G.G, G.F. MapReduce A.A. 2014/2015 14 / 42
Implementazione
Fault ToleranceMaster Failure
Il master salva dei checkpoints periodici delle strutture dati descritte
Se il master muore, una nuova copia viene eseguita a partiredall’ultimo checkpoint
Failure del master improbabile
Questa implementazione prevede l’abort della computazione se ilmaster muore
G.G, G.F. MapReduce A.A. 2014/2015 15 / 42
Implementazione
Localita
La larghezza di banda e una risorsa relativamente scarsa
Per preservarla si e pensato di avvantaggiarsi del fatto che i dati diinput sono conservati sui dischi locali delle macchine del cluster
Il master, che possiede le informazioni sulla locazione dei files di input,cerca di schedulare i map task sulle macchine che hanno una replicadei file di input corrispondenti (o su macchine sullo stesso switch)
Con grosse operazioni di MapReduce, gran parte dei dati sono lettilocalmente e non consumano larghezza di banda
G.G, G.F. MapReduce A.A. 2014/2015 16 / 42
Implementazione
Granularita
Dobbiamo suddividere la fase di map in M pezzi e quella di reduce inR pezzi
Idealmente, M e R dovrebbero essere molto piu grandi del numero dimacchine workers
Avere ogni worker che esegue diversi task migliora il bilanciamento delcarico e velocizza il recovery quando un worker fallisce
M scelto in modo che ogni task individuale processi dai 16 ai 64 MBdi dati
R scelto come multiplo piccolo del numero di macchine workers
G.G, G.F. MapReduce A.A. 2014/2015 17 / 42
Implementazione
Backup Task
Alcune cause comuni possono influenzare la lunghezza dell’operazionedi MapReduce:
es: una macchina ci mette un tempo inusuale per completare un task
Soluzione: il master schedule l’esecuzione di backup sui taskin-progress
Il task e segnato come completo quando l’esecuzione primaria o dibackup termina
Il tempo totale di risoluzione di grosse operazioni di MapReduce esensibilmente ridotto a fronte di un piccolo aumento di risorsecomputazionali richieste
G.G, G.F. MapReduce A.A. 2014/2015 18 / 42
Raffinamenti
1 Obiettivi
2 Implementazione
3 Raffinamenti
4 Performance
5 Conclusioni
G.G, G.F. MapReduce A.A. 2014/2015 19 / 42
Raffinamenti
RaffinamentiFunzione di partizionamento
L’utente specifica il numero di reduce task desiderato R
I dati vengono partizionati su questi task utilizzando una funzione dipartizione sulle chiavi intermedie
hash(key) mod R
Potremmo voler partizionare i dati utilizzando un altro tipo difunzione sulla chiave
hash(hostname(urlKey)) mod R
G.G, G.F. MapReduce A.A. 2014/2015 20 / 42
Raffinamenti
RaffinamentiGaranzia di ordinamento
La libreria garantisce che, in una data partizione, le coppiechiave/valore vengono processate in ordine di chiave incrementale
Questo ordinamento rende facile generare un output file ordinato
Utile per supportare in maniera efficiente accesso casuale alle chiavi
G.G, G.F. MapReduce A.A. 2014/2015 21 / 42
Raffinamenti
RaffinamentiCombiner
In alcuni casi abbiamo una significativa ripetizione delle chiaviintermedie prodotte da ogni map task
All’utente e permesso specificare una funzione Combiner opzionaleche fa un merge parziale dai dati prima di propagarli sulla rete
Il Combiner e eseguito su ogni macchina che esegue un map task
Tipicamente lo stesso codice e utilizzato per le funzioni di combiner ereduce
MapReduceOutput* out = spec.output();
out->set_reducer_class("Adder");
out->set_combiner_class("Adder");
G.G, G.F. MapReduce A.A. 2014/2015 22 / 42
Raffinamenti
RaffinamentiBad Records
A volte ci sono dei bug che causano il crash delle funzioni dimap/reduce su alcuni record; fixare il bug non e sempre possibile
libreria di terze parti
Puo essere accettabile ignorare alcuni record
analisi statistiche su un grosso data set
Si fornisce una modalita di esecuzione opzionale nella quale la libreriadi MapReduce identifica i record che causano un crash e li salta perprogredire l’esecuzione
G.G, G.F. MapReduce A.A. 2014/2015 23 / 42
Raffinamenti
RaffinamentiBad Records (2)
Ogni processo worker installa un signal handler che cattura glieventuali errori
Prima di invocare un’operazione di Map o Reduce, si conserva unsequence number in una variabile globale
Se il codice genera un segnale, l’handler invia un pacchetto UDP conil sequence number al master
Quando il master osserva piu di una failure su un determinato record,indica che tale record dovra essere skippato nella successivari-esecuzione del task corrispondente
G.G, G.F. MapReduce A.A. 2014/2015 24 / 42
Raffinamenti
RaffinamentiEsecuzione locale
Il debugging su questi sistemi puo essere difficile
la computazione avviene in maniera distribuita su centinaia di macchinecon un carico assegnato dinamicamente dal master
Per facilitare il debugging, il profiling e il testing su piccola scala epossibile utilizzare una modalita di esecuzione del MapReduce cheesegue in maniera sequenziale tutta la computazione su una singolamacchina locale
Facile utilizzo di tool di debugging e testing
G.G, G.F. MapReduce A.A. 2014/2015 25 / 42
Raffinamenti
RaffinamentiStatus Information
Il master avvia un server HTTP interno ed esporta un set di pagine
progresso della computazione, task completati e in progresso, byte ininput e in output, workers che hanno fallito e in quali map/reduce task
Tali informazioni sono utili per rilevare eventuali bug
L’utente puo fare previsioni sulla lunghezza della computazione o sullerisorse da aggiungere
G.G, G.F. MapReduce A.A. 2014/2015 26 / 42
Raffinamenti
RaffinamentiContatori (1)
La libreria fornisce una struttura contatore per facilitare il conteggiodelle occorrenze di vari eventi
Counter* uppercase;
uppercase = GetCounter("uppercase");
map(String name, String contents):
for each word w in contents:
if (IsCapitalized(w)):
uppercase->Increment();
EmitIntermediate(w, "1");
G.G, G.F. MapReduce A.A. 2014/2015 27 / 42
Raffinamenti
RaffinamentiContatori (2)
Il valore del contatore e propagato periodicamente dalle workermachine verso il master
Il master aggrega i valori del contatore dai map/reduce task conclusicon successo
Elimina gli effetti di esecuzioni duplicate
backup task o ri-esecuzioni dovute a failure
Alcuni contatori sono mantenuti in automatico
numero di coppie chiave/valore processate e numero di coppie prodottein output
Utile per facilitare sanity checking
G.G, G.F. MapReduce A.A. 2014/2015 28 / 42
Performance
1 Obiettivi
2 Implementazione
3 Raffinamenti
4 Performance
5 Conclusioni
G.G, G.F. MapReduce A.A. 2014/2015 29 / 42
Performance
Configurazione del cluster
1800 macchine
dual core 2GHz Intel Xeon con Hyperthreading
4GB memoria
2x 160GB dischi IDE
link gigabit Ethernet
G.G, G.F. MapReduce A.A. 2014/2015 30 / 42
Performance
Computazione 1 - Grep
Ricerca di un particolare pattern su 1 terabyte di dati
Pattern di 3 caratteri particolarmente raro (92.337 record)
1010 record da 100 byte
M = 15000: input splittato in blocchi da 64MB
R = 1: un solo file di output
G.G, G.F. MapReduce A.A. 2014/2015 31 / 42
Performance
Computazione 1 - Grep (2)Rate di scansione dell’input
G.G, G.F. MapReduce A.A. 2014/2015 32 / 42
Performance
Computazione 2 - Sort
Sort su 1010 record da 100 bytes (1 terabyte)
M = 15000: input splittato in blocchi da 64MB
R = 4000: funzione di ripartizione con byte iniziali della chiave
Meno di 50 LOC di user code:
3 LOC Map functionIdentity function come operatore di Reduce
Fattore di replica 2 per l’output
G.G, G.F. MapReduce A.A. 2014/2015 33 / 42
Performance
Computazione 2 - SortNormal execution
input rate minore che per grep
lo shuffle parte subito
localita: input rate piu alto delloshuffle ratereplica: shuffle rate piu altodell’output rate
G.G, G.F. MapReduce A.A. 2014/2015 34 / 42
Performance
Computazione 2 - SortSenza task di backup
lunga coda delle attivita discrittura
1283 secondi: + 44%
G.G, G.F. MapReduce A.A. 2014/2015 35 / 42
Performance
Computazione 2 - SortMachine failure
200 worker killati
scheduling sulle stesse macchine
933 secondi: +5% (inclusooverhead startup)
G.G, G.F. MapReduce A.A. 2014/2015 36 / 42
Conclusioni
1 Obiettivi
2 Implementazione
3 Raffinamenti
4 Performance
5 Conclusioni
G.G, G.F. MapReduce A.A. 2014/2015 38 / 42
Conclusioni
Successo del modello MapReduceRagioni
Facilita di utilizzo, anche per programmatori senza esperienza consistemi distribuiti e paralleli
nasconde i dettagli di parallelizzazione, fault-tolerance, ottimizzazionelocale e bilanciamento del carico
Vasta classe di problemi facilmente esprimibile come computazioneMapReduce
indicizzazione per web search, sorting, data mining, machine learning
Implementazione scalabile su un grande cluster
uso efficiente delle risorseutilizzabile per i grandi problemi computazionali affrontati da Google
G.G, G.F. MapReduce A.A. 2014/2015 39 / 42
Conclusioni
Lesson learned
Limitare il programming model rende piu semplice parallelizzare,distribuire la computazione e renderla fault-tolerant
La larghezza di banda della rete e una risorsa scarsa
ottimizzazioni per ridurre i dati inviati attraverso la rete: localita
La ridondanza nell’esecuzione puo essere usata per ridurre l’impattodi macchine lente, gestendone il fallimento e la perdita dei dati
G.G, G.F. MapReduce A.A. 2014/2015 40 / 42