SlideShare a Scribd company logo
1 of 41
Download to read offline
MapReduce: Simplified Data Processing on Large
Clusters
Jeffrey Dean and Sanjay Ghemawat
Giovanni Grano Gino Farisano
Universit`a degli Studi di Salerno
A.A. 2014/2015
Corso 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 di
computazione special-purpose per grosse moli di dati
Caratteristiche:
Computazione lineare che ha bisogno di essere distribuita su centinaia
di macchine
Grossa mole di raw data
Sfida: parallelizzare la computazione, distribuire i dati, gestire le
failure nascondendo la complessit`a del codice per rispondere a questi
problemi!
G.G, G.F. MapReduce A.A. 2014/2015 3 / 42
Obiettivi
Obiettivi (2)
Approccio: Astrazione che permette di gestire computazioni semplici
nascondendo 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 con
switch 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 system
distribuito (GFS) sviluppato direttamente in-house
G.G, G.F. MapReduce A.A. 2014/2015 6 / 42
Implementazione
Esecuzione (1)
1 La libreria di MapReduce
splitta i files di input in
M pezzi, (16-64MB per
pezzo). Avvia le diverse
copie del programma
sulle macchine del
cluster
G.G, G.F. MapReduce A.A. 2014/2015 7 / 42
Implementazione
Esecuzione (2)
2 Una copia del
programma `e il master.
Le restanti sono workers
a cui viene assegnato il
lavoro dal master. Ci
sono M map task e R
reduce task da
assegnare.Il master
prende gli idle workers e
assegna loro un map e/o
un reduce task
G.G, G.F. MapReduce A.A. 2014/2015 8 / 42
Implementazione
Esecuzione (3)
3 Un worker con un map
task legge il contenuto
dell’input split
corrispondente. Prende
le coppie chiave/valore
degli input data e li
passa alla funzione di
map. Le coppie
intermedie prodotte sono
bufferizzate in memoria
G.G, G.F. MapReduce A.A. 2014/2015 9 / 42
Implementazione
Esecuzione (4)
4 Periodicamente le coppie
intermedie sono scritte
sui dischi locali. Queste
locazioni sono passate al
master che `e
responsabile del forward
verso i reduce workers
G.G, G.F. MapReduce A.A. 2014/2015 10 / 42
Implementazione
Esecuzione (5)
5 Quando notificato dal
master, il reduce worker
legge tramite RPC i dati
dai dischi locali dei map
workers. Ordina i dati
sulla chiave intermedia,
in modo che tutte le
occorrenze della stessa
chiave siano raggruppate
G.G, G.F. MapReduce A.A. 2014/2015 11 / 42
Implementazione
Esecuzione (6)
6 Il reduce worker itera sui
dati intermedi e per ogni
chiave univoca passa i
corrispondenti valori alla
funzione di reduce.
L’output `e concatenato
al file di output finale
per 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 dimensione
dei file intermedi prodotti dal map task
Queste informazioni sono fornite in maniera incrementale ai workers
che hanno reduce task in-progress
G.G, G.F. MapReduce A.A. 2014/2015 13 / 42
Implementazione
Fault Tolerance
Worker Failure
Il master pinga ogni worker periodicamente. Se non ottiene risposta
dopo un tot di tempo marca il worker come failed
Ogni map task completato `e resettato allo stato iniziale di idle ed `e
schedulabile 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 di
idle
I reduce task completati non hanno bisogno di essere ri-schedulati in
quanto l’output `e salvato nel global file system
G.G, G.F. MapReduce A.A. 2014/2015 14 / 42
Implementazione
Fault Tolerance
Master Failure
Il master salva dei checkpoints periodici delle strutture dati descritte
Se il master muore, una nuova copia viene eseguita a partire
dall’ultimo checkpoint
Failure del master improbabile
Questa implementazione prevede l’abort della computazione se il
master muore
G.G, G.F. MapReduce A.A. 2014/2015 15 / 42
Implementazione
Localit`a
La larghezza di banda `e una risorsa relativamente scarsa
Per preservarla si `e pensato di avvantaggiarsi del fatto che i dati di
input 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 replica
dei file di input corrispondenti (o su macchine sullo stesso switch)
Con grosse operazioni di MapReduce, gran parte dei dati sono letti
localmente e non consumano larghezza di banda
G.G, G.F. MapReduce A.A. 2014/2015 16 / 42
Implementazione
Granularit`a
Dobbiamo suddividere la fase di map in M pezzi e quella di reduce in
R pezzi
Idealmente, M e R dovrebbero essere molto pi`u grandi del numero di
macchine workers
Avere ogni worker che esegue diversi task migliora il bilanciamento del
carico e velocizza il recovery quando un worker fallisce
M scelto in modo che ogni task individuale processi dai 16 ai 64 MB
di 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’operazione
di MapReduce:
es: una macchina ci mette un tempo inusuale per completare un task
Soluzione: il master schedule l’esecuzione di backup sui task
in-progress
Il task `e segnato come completo quando l’esecuzione primaria o di
backup termina
Il tempo totale di risoluzione di grosse operazioni di MapReduce `e
sensibilmente ridotto a fronte di un piccolo aumento di risorse
computazionali 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
Raffinamenti
Funzione di partizionamento
L’utente specifica il numero di reduce task desiderato R
I dati vengono partizionati su questi task utilizzando una funzione di
partizione sulle chiavi intermedie
hash(key) mod R
Potremmo voler partizionare i dati utilizzando un altro tipo di
funzione sulla chiave
hash(hostname(urlKey)) mod R
G.G, G.F. MapReduce A.A. 2014/2015 20 / 42
Raffinamenti
Raffinamenti
Garanzia di ordinamento
La libreria garantisce che, in una data partizione, le coppie
chiave/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
Raffinamenti
Combiner
In alcuni casi abbiamo una significativa ripetizione delle chiavi
intermedie prodotte da ogni map task
All’utente `e permesso specificare una funzione Combiner opzionale
che 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 e
reduce
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
Raffinamenti
Bad Records
A volte ci sono dei bug che causano il crash delle funzioni di
map/reduce su alcuni record; fixare il bug non `e sempre possibile
libreria di terze parti
Pu`o essere accettabile ignorare alcuni record
analisi statistiche su un grosso data set
Si fornisce una modalit`a di esecuzione opzionale nella quale la libreria
di MapReduce identifica i record che causano un crash e li salta per
progredire l’esecuzione
G.G, G.F. MapReduce A.A. 2014/2015 23 / 42
Raffinamenti
Raffinamenti
Bad Records (2)
Ogni processo worker installa un signal handler che cattura gli
eventuali errori
Prima di invocare un’operazione di Map o Reduce, si conserva un
sequence number in una variabile globale
Se il codice genera un segnale, l’handler invia un pacchetto UDP con
il sequence number al master
Quando il master osserva pi`u di una failure su un determinato record,
indica che tale record dovr`a essere skippato nella successiva
ri-esecuzione del task corrispondente
G.G, G.F. MapReduce A.A. 2014/2015 24 / 42
Raffinamenti
Raffinamenti
Esecuzione locale
Il debugging su questi sistemi pu`o essere difficile
la computazione avviene in maniera distribuita su centinaia di macchine
con un carico assegnato dinamicamente dal master
Per facilitare il debugging, il profiling e il testing su piccola scala `e
possibile utilizzare una modalit`a di esecuzione del MapReduce che
esegue in maniera sequenziale tutta la computazione su una singola
macchina locale
Facile utilizzo di tool di debugging e testing
G.G, G.F. MapReduce A.A. 2014/2015 25 / 42
Raffinamenti
Raffinamenti
Status Information
Il master avvia un server HTTP interno ed esporta un set di pagine
progresso della computazione, task completati e in progresso, byte in
input e in output, workers che hanno fallito e in quali map/reduce task
Tali informazioni sono utili per rilevare eventuali bug
L’utente pu`o fare previsioni sulla lunghezza della computazione o sulle
risorse da aggiungere
G.G, G.F. MapReduce A.A. 2014/2015 26 / 42
Raffinamenti
Raffinamenti
Contatori (1)
La libreria fornisce una struttura contatore per facilitare il conteggio
delle 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
Raffinamenti
Contatori (2)
Il valore del contatore `e propagato periodicamente dalle worker
machine verso il master
Il master aggrega i valori del contatore dai map/reduce task conclusi
con 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 prodotte
in 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 function
Identity 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 - Sort
Normal execution
input rate minore che per grep
lo shuffle parte subito
localit`a: input rate pi`u alto dello
shuffle rate
replica: shuffle rate pi`u alto
dell’output rate
G.G, G.F. MapReduce A.A. 2014/2015 34 / 42
Performance
Computazione 2 - Sort
Senza task di backup
lunga coda delle attivit`a di
scrittura
1283 secondi: + 44%
G.G, G.F. MapReduce A.A. 2014/2015 35 / 42
Performance
Computazione 2 - Sort
Machine failure
200 worker killati
scheduling sulle stesse macchine
933 secondi: +5% (incluso
overhead startup)
G.G, G.F. MapReduce A.A. 2014/2015 36 / 42
Experience
Evoluzione
G.G, G.F. MapReduce A.A. 2014/2015 37 / 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 MapReduce
Ragioni
Facilit`a di utilizzo, anche per programmatori senza esperienza con
sistemi distribuiti e paralleli
nasconde i dettagli di parallelizzazione, fault-tolerance, ottimizzazione
locale e bilanciamento del carico
Vasta classe di problemi facilmente esprimibile come computazione
MapReduce
indicizzazione per web search, sorting, data mining, machine learning
Implementazione scalabile su un grande cluster
uso efficiente delle risorse
utilizzabile 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 pi`u 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: localit`a
La ridondanza nell’esecuzione pu`o essere usata per ridurre l’impatto
di macchine lente, gestendone il fallimento e la perdita dei dati
G.G, G.F. MapReduce A.A. 2014/2015 40 / 42
MapReduce

More Related Content

Viewers also liked

Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...
Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...
Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...E-Commerce Brasil
 
Soy un estudiante de la universidad nacional de chimborazo
Soy un estudiante de la universidad nacional de chimborazoSoy un estudiante de la universidad nacional de chimborazo
Soy un estudiante de la universidad nacional de chimborazoAndrés Fonseca
 
141209 cognitive assessmenttoo-kit-final
141209 cognitive assessmenttoo-kit-final141209 cognitive assessmenttoo-kit-final
141209 cognitive assessmenttoo-kit-finalRizki Kamalia
 
Informatica deontologia
Informatica deontologiaInformatica deontologia
Informatica deontologiaGiovany2015
 
Fórum 2016 - Novas ameaças à segurança de um e-commerce
Fórum 2016 - Novas ameaças à segurança de um e-commerceFórum 2016 - Novas ameaças à segurança de um e-commerce
Fórum 2016 - Novas ameaças à segurança de um e-commerceE-Commerce Brasil
 
Informatica deontologia
Informatica deontologiaInformatica deontologia
Informatica deontologiaGiovany2015
 
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)Alberto Sapignoli
 
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...E-Commerce Brasil
 
Expocicion pedagogia
Expocicion pedagogiaExpocicion pedagogia
Expocicion pedagogiaBertha Lema
 
Mellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievMellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievVolodymyr Saviak
 
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...D_iana
 
γατοκουβέντες
γατοκουβέντεςγατοκουβέντες
γατοκουβέντεςDora Batsi
 

Viewers also liked (19)

Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...
Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...
Palestra – o e commerce no contexto da crise potencialidades do mercado virtu...
 
Soy un estudiante de la universidad nacional de chimborazo
Soy un estudiante de la universidad nacional de chimborazoSoy un estudiante de la universidad nacional de chimborazo
Soy un estudiante de la universidad nacional de chimborazo
 
La ecologia
La ecologiaLa ecologia
La ecologia
 
141209 cognitive assessmenttoo-kit-final
141209 cognitive assessmenttoo-kit-final141209 cognitive assessmenttoo-kit-final
141209 cognitive assessmenttoo-kit-final
 
Pedagogia vocabulario
Pedagogia vocabularioPedagogia vocabulario
Pedagogia vocabulario
 
Mapas unidad I
Mapas unidad IMapas unidad I
Mapas unidad I
 
Comentario
ComentarioComentario
Comentario
 
Informatica deontologia
Informatica deontologiaInformatica deontologia
Informatica deontologia
 
Fórum 2016 - Novas ameaças à segurança de um e-commerce
Fórum 2016 - Novas ameaças à segurança de um e-commerceFórum 2016 - Novas ameaças à segurança de um e-commerce
Fórum 2016 - Novas ameaças à segurança de um e-commerce
 
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
 
Informatica deontologia
Informatica deontologiaInformatica deontologia
Informatica deontologia
 
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)
Alberto Sapignoli [Curriculumvitae] - (last update: 31/08/17)
 
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...
Congresso Gestão 2016 - Compliance e Gestão Tributária: redução de riscos e i...
 
ESTADISTICA DE SEGUNDO 2016
ESTADISTICA DE SEGUNDO 2016ESTADISTICA DE SEGUNDO 2016
ESTADISTICA DE SEGUNDO 2016
 
Hp kiev hpcday_20121012
Hp kiev hpcday_20121012Hp kiev hpcday_20121012
Hp kiev hpcday_20121012
 
Expocicion pedagogia
Expocicion pedagogiaExpocicion pedagogia
Expocicion pedagogia
 
Mellanox hpc day 2011 kiev
Mellanox hpc day 2011 kievMellanox hpc day 2011 kiev
Mellanox hpc day 2011 kiev
 
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...
Analysis of Pomegranate Rind for Antibacterial Properties in both, the Organi...
 
γατοκουβέντες
γατοκουβέντεςγατοκουβέντες
γατοκουβέντες
 

Similar to MapReduce

Webinar 2013 12-10-presentazione_jm
Webinar 2013 12-10-presentazione_jmWebinar 2013 12-10-presentazione_jm
Webinar 2013 12-10-presentazione_jmsmespire
 
PresentazioneLaureaMatteoVettosi
PresentazioneLaureaMatteoVettosiPresentazioneLaureaMatteoVettosi
PresentazioneLaureaMatteoVettosiMatteo Vettosi
 
Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Margherita Di Leo
 
OpenStreetMap - Gvsig Trieste
OpenStreetMap - Gvsig TriesteOpenStreetMap - Gvsig Trieste
OpenStreetMap - Gvsig TriesteSimone Cortesi
 
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)CRS4 Research Center in Sardinia
 
Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Margherita Di Leo
 
2014 04-10 Presentazione Plenaria SIAT_short
2014 04-10 Presentazione Plenaria SIAT_short2014 04-10 Presentazione Plenaria SIAT_short
2014 04-10 Presentazione Plenaria SIAT_shortPAT
 
Reactive programming principles
Reactive programming principlesReactive programming principles
Reactive programming principlesRiccardo Cardin
 
2014 02-25 hackathon-final
2014 02-25 hackathon-final2014 02-25 hackathon-final
2014 02-25 hackathon-finalPAT
 

Similar to MapReduce (12)

Tesi andrea cingolani
Tesi andrea cingolaniTesi andrea cingolani
Tesi andrea cingolani
 
Webinar 2013 12-10-presentazione_jm
Webinar 2013 12-10-presentazione_jmWebinar 2013 12-10-presentazione_jm
Webinar 2013 12-10-presentazione_jm
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 
PresentazioneLaureaMatteoVettosi
PresentazioneLaureaMatteoVettosiPresentazioneLaureaMatteoVettosi
PresentazioneLaureaMatteoVettosi
 
Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente
 
OpenStreetMap - Gvsig Trieste
OpenStreetMap - Gvsig TriesteOpenStreetMap - Gvsig Trieste
OpenStreetMap - Gvsig Trieste
 
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
 
Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente
 
2014 04-10 Presentazione Plenaria SIAT_short
2014 04-10 Presentazione Plenaria SIAT_short2014 04-10 Presentazione Plenaria SIAT_short
2014 04-10 Presentazione Plenaria SIAT_short
 
Reactive programming principles
Reactive programming principlesReactive programming principles
Reactive programming principles
 
2014 02-25 hackathon-final
2014 02-25 hackathon-final2014 02-25 hackathon-final
2014 02-25 hackathon-final
 
Nettools Epanet
Nettools   EpanetNettools   Epanet
Nettools Epanet
 

MapReduce

  • 1. MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat Giovanni Grano Gino Farisano Universit`a degli Studi di Salerno A.A. 2014/2015 Corso di Sistemi Operativi Avanzati G.G, G.F. MapReduce A.A. 2014/2015 1 / 42
  • 2. Outline 1 Obiettivi 2 Implementazione 3 Raffinamenti 4 Performance 5 Conclusioni G.G, G.F. MapReduce A.A. 2014/2015 2 / 42
  • 3. Obiettivi Obiettivi (1) Negli anni, diversi autori hanno implementato centinaia di modelli di computazione special-purpose per grosse moli di dati Caratteristiche: Computazione lineare che ha bisogno di essere distribuita su centinaia di macchine Grossa mole di raw data Sfida: parallelizzare la computazione, distribuire i dati, gestire le failure nascondendo la complessit`a del codice per rispondere a questi problemi! G.G, G.F. MapReduce A.A. 2014/2015 3 / 42
  • 4. Obiettivi Obiettivi (2) Approccio: Astrazione che permette di gestire computazioni semplici nascondendo 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
  • 5. Implementazione 1 Obiettivi 2 Implementazione 3 Raffinamenti 4 Performance 5 Conclusioni G.G, G.F. MapReduce A.A. 2014/2015 5 / 42
  • 6. Implementazione Environment Google Environment: grandi cluster di commodity PC connessi con switch 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 system distribuito (GFS) sviluppato direttamente in-house G.G, G.F. MapReduce A.A. 2014/2015 6 / 42
  • 7. Implementazione Esecuzione (1) 1 La libreria di MapReduce splitta i files di input in M pezzi, (16-64MB per pezzo). Avvia le diverse copie del programma sulle macchine del cluster G.G, G.F. MapReduce A.A. 2014/2015 7 / 42
  • 8. Implementazione Esecuzione (2) 2 Una copia del programma `e il master. Le restanti sono workers a cui viene assegnato il lavoro dal master. Ci sono M map task e R reduce task da assegnare.Il master prende gli idle workers e assegna loro un map e/o un reduce task G.G, G.F. MapReduce A.A. 2014/2015 8 / 42
  • 9. Implementazione Esecuzione (3) 3 Un worker con un map task legge il contenuto dell’input split corrispondente. Prende le coppie chiave/valore degli input data e li passa alla funzione di map. Le coppie intermedie prodotte sono bufferizzate in memoria G.G, G.F. MapReduce A.A. 2014/2015 9 / 42
  • 10. Implementazione Esecuzione (4) 4 Periodicamente le coppie intermedie sono scritte sui dischi locali. Queste locazioni sono passate al master che `e responsabile del forward verso i reduce workers G.G, G.F. MapReduce A.A. 2014/2015 10 / 42
  • 11. Implementazione Esecuzione (5) 5 Quando notificato dal master, il reduce worker legge tramite RPC i dati dai dischi locali dei map workers. Ordina i dati sulla chiave intermedia, in modo che tutte le occorrenze della stessa chiave siano raggruppate G.G, G.F. MapReduce A.A. 2014/2015 11 / 42
  • 12. Implementazione Esecuzione (6) 6 Il reduce worker itera sui dati intermedi e per ogni chiave univoca passa i corrispondenti valori alla funzione di reduce. L’output `e concatenato al file di output finale per quel reduce G.G, G.F. MapReduce A.A. 2014/2015 12 / 42
  • 13. 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 dimensione dei file intermedi prodotti dal map task Queste informazioni sono fornite in maniera incrementale ai workers che hanno reduce task in-progress G.G, G.F. MapReduce A.A. 2014/2015 13 / 42
  • 14. Implementazione Fault Tolerance Worker Failure Il master pinga ogni worker periodicamente. Se non ottiene risposta dopo un tot di tempo marca il worker come failed Ogni map task completato `e resettato allo stato iniziale di idle ed `e schedulabile 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 di idle I reduce task completati non hanno bisogno di essere ri-schedulati in quanto l’output `e salvato nel global file system G.G, G.F. MapReduce A.A. 2014/2015 14 / 42
  • 15. Implementazione Fault Tolerance Master Failure Il master salva dei checkpoints periodici delle strutture dati descritte Se il master muore, una nuova copia viene eseguita a partire dall’ultimo checkpoint Failure del master improbabile Questa implementazione prevede l’abort della computazione se il master muore G.G, G.F. MapReduce A.A. 2014/2015 15 / 42
  • 16. Implementazione Localit`a La larghezza di banda `e una risorsa relativamente scarsa Per preservarla si `e pensato di avvantaggiarsi del fatto che i dati di input 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 replica dei file di input corrispondenti (o su macchine sullo stesso switch) Con grosse operazioni di MapReduce, gran parte dei dati sono letti localmente e non consumano larghezza di banda G.G, G.F. MapReduce A.A. 2014/2015 16 / 42
  • 17. Implementazione Granularit`a Dobbiamo suddividere la fase di map in M pezzi e quella di reduce in R pezzi Idealmente, M e R dovrebbero essere molto pi`u grandi del numero di macchine workers Avere ogni worker che esegue diversi task migliora il bilanciamento del carico e velocizza il recovery quando un worker fallisce M scelto in modo che ogni task individuale processi dai 16 ai 64 MB di dati R scelto come multiplo piccolo del numero di macchine workers G.G, G.F. MapReduce A.A. 2014/2015 17 / 42
  • 18. Implementazione Backup Task Alcune cause comuni possono influenzare la lunghezza dell’operazione di MapReduce: es: una macchina ci mette un tempo inusuale per completare un task Soluzione: il master schedule l’esecuzione di backup sui task in-progress Il task `e segnato come completo quando l’esecuzione primaria o di backup termina Il tempo totale di risoluzione di grosse operazioni di MapReduce `e sensibilmente ridotto a fronte di un piccolo aumento di risorse computazionali richieste G.G, G.F. MapReduce A.A. 2014/2015 18 / 42
  • 19. Raffinamenti 1 Obiettivi 2 Implementazione 3 Raffinamenti 4 Performance 5 Conclusioni G.G, G.F. MapReduce A.A. 2014/2015 19 / 42
  • 20. Raffinamenti Raffinamenti Funzione di partizionamento L’utente specifica il numero di reduce task desiderato R I dati vengono partizionati su questi task utilizzando una funzione di partizione sulle chiavi intermedie hash(key) mod R Potremmo voler partizionare i dati utilizzando un altro tipo di funzione sulla chiave hash(hostname(urlKey)) mod R G.G, G.F. MapReduce A.A. 2014/2015 20 / 42
  • 21. Raffinamenti Raffinamenti Garanzia di ordinamento La libreria garantisce che, in una data partizione, le coppie chiave/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
  • 22. Raffinamenti Raffinamenti Combiner In alcuni casi abbiamo una significativa ripetizione delle chiavi intermedie prodotte da ogni map task All’utente `e permesso specificare una funzione Combiner opzionale che 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 e reduce 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
  • 23. Raffinamenti Raffinamenti Bad Records A volte ci sono dei bug che causano il crash delle funzioni di map/reduce su alcuni record; fixare il bug non `e sempre possibile libreria di terze parti Pu`o essere accettabile ignorare alcuni record analisi statistiche su un grosso data set Si fornisce una modalit`a di esecuzione opzionale nella quale la libreria di MapReduce identifica i record che causano un crash e li salta per progredire l’esecuzione G.G, G.F. MapReduce A.A. 2014/2015 23 / 42
  • 24. Raffinamenti Raffinamenti Bad Records (2) Ogni processo worker installa un signal handler che cattura gli eventuali errori Prima di invocare un’operazione di Map o Reduce, si conserva un sequence number in una variabile globale Se il codice genera un segnale, l’handler invia un pacchetto UDP con il sequence number al master Quando il master osserva pi`u di una failure su un determinato record, indica che tale record dovr`a essere skippato nella successiva ri-esecuzione del task corrispondente G.G, G.F. MapReduce A.A. 2014/2015 24 / 42
  • 25. Raffinamenti Raffinamenti Esecuzione locale Il debugging su questi sistemi pu`o essere difficile la computazione avviene in maniera distribuita su centinaia di macchine con un carico assegnato dinamicamente dal master Per facilitare il debugging, il profiling e il testing su piccola scala `e possibile utilizzare una modalit`a di esecuzione del MapReduce che esegue in maniera sequenziale tutta la computazione su una singola macchina locale Facile utilizzo di tool di debugging e testing G.G, G.F. MapReduce A.A. 2014/2015 25 / 42
  • 26. Raffinamenti Raffinamenti Status Information Il master avvia un server HTTP interno ed esporta un set di pagine progresso della computazione, task completati e in progresso, byte in input e in output, workers che hanno fallito e in quali map/reduce task Tali informazioni sono utili per rilevare eventuali bug L’utente pu`o fare previsioni sulla lunghezza della computazione o sulle risorse da aggiungere G.G, G.F. MapReduce A.A. 2014/2015 26 / 42
  • 27. Raffinamenti Raffinamenti Contatori (1) La libreria fornisce una struttura contatore per facilitare il conteggio delle 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
  • 28. Raffinamenti Raffinamenti Contatori (2) Il valore del contatore `e propagato periodicamente dalle worker machine verso il master Il master aggrega i valori del contatore dai map/reduce task conclusi con 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 prodotte in output Utile per facilitare sanity checking G.G, G.F. MapReduce A.A. 2014/2015 28 / 42
  • 29. Performance 1 Obiettivi 2 Implementazione 3 Raffinamenti 4 Performance 5 Conclusioni G.G, G.F. MapReduce A.A. 2014/2015 29 / 42
  • 30. 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
  • 31. 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
  • 32. Performance Computazione 1 - Grep (2) Rate di scansione dell’input G.G, G.F. MapReduce A.A. 2014/2015 32 / 42
  • 33. 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 function Identity function come operatore di Reduce Fattore di replica 2 per l’output G.G, G.F. MapReduce A.A. 2014/2015 33 / 42
  • 34. Performance Computazione 2 - Sort Normal execution input rate minore che per grep lo shuffle parte subito localit`a: input rate pi`u alto dello shuffle rate replica: shuffle rate pi`u alto dell’output rate G.G, G.F. MapReduce A.A. 2014/2015 34 / 42
  • 35. Performance Computazione 2 - Sort Senza task di backup lunga coda delle attivit`a di scrittura 1283 secondi: + 44% G.G, G.F. MapReduce A.A. 2014/2015 35 / 42
  • 36. Performance Computazione 2 - Sort Machine failure 200 worker killati scheduling sulle stesse macchine 933 secondi: +5% (incluso overhead startup) G.G, G.F. MapReduce A.A. 2014/2015 36 / 42
  • 38. Conclusioni 1 Obiettivi 2 Implementazione 3 Raffinamenti 4 Performance 5 Conclusioni G.G, G.F. MapReduce A.A. 2014/2015 38 / 42
  • 39. Conclusioni Successo del modello MapReduce Ragioni Facilit`a di utilizzo, anche per programmatori senza esperienza con sistemi distribuiti e paralleli nasconde i dettagli di parallelizzazione, fault-tolerance, ottimizzazione locale e bilanciamento del carico Vasta classe di problemi facilmente esprimibile come computazione MapReduce indicizzazione per web search, sorting, data mining, machine learning Implementazione scalabile su un grande cluster uso efficiente delle risorse utilizzabile per i grandi problemi computazionali affrontati da Google G.G, G.F. MapReduce A.A. 2014/2015 39 / 42
  • 40. Conclusioni Lesson learned Limitare il programming model rende pi`u 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: localit`a La ridondanza nell’esecuzione pu`o essere usata per ridurre l’impatto di macchine lente, gestendone il fallimento e la perdita dei dati G.G, G.F. MapReduce A.A. 2014/2015 40 / 42