MapReduce: Simplified Data Processing on Large Clusters

41
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

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

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 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