MapReduce: teoria e implementazione -...
Transcript of MapReduce: teoria e implementazione -...
![Page 1: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/1.jpg)
MapReduce: teoria e implementazione
1
![Page 2: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/2.jpg)
Genesi
• nasce nel 2004 ❒ [“MapReduce: simplified Data Processing on
Large Clusters”, Dean, Ghemawat. Google Inc.] • nasce dall’esigenza di eseguire problemi
“semplici” su big data (>1TB) - e.g., ❒ grep ❒ conteggio delle frequenze di accesso a url ❒ inverted index
2
![Page 3: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/3.jpg)
Fino al 2004 • Large input data => soluzione di Google:
<<abbiamo tante risorse computazionali. Usiamole! Distribuiamo la computazione!>> ❒ Riformulare il programma per calcolo parallelo ❒ distribuire dati ❒ gestire guasti, etc.
• => il problema non è più semplice! • Per di più: occorre riformulare ogni singolo
problema (grep, inverted index, etc.) 3
![Page 4: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/4.jpg)
Motivazioni in breve
① Voglio processare grandi moli di dati ② Voglio usare molte (centinaia/
migliaia) di CPU ③ Voglio che tutto questo sia
SEMPLICE
4
![Page 5: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/5.jpg)
Nel 2004 • Dean e Ghemawat propongono MapReduce, un nuovo
modello di programmazione distribuita. • Risolve problemi di analisi di grandi insiemi di dati
(stesso insieme di istruzioni su tanti record diversi). • Si chiede al programmatore di convertire il suo
codice in due funzioni: ❒ map function ❒ reduce function
I programmi scritti secondo questo modello sono intrinsecamente parallelizzabili
5
![Page 6: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/6.jpg)
Map & Reduce
value map key value key value key value key value key value key value key value key
…...
(key1, val)
(key8, val)
(key1, val)
(key8, val)
(key5, val)
(key1, val)
map
map
reduce
reduce
reduce
…... …...
value key value key value key value key value key value key value key value key
input data set intermediate
pairs output
data set sh
uffle
6
![Page 7: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/7.jpg)
Come può esserci utile?
• Un esempio classico: WordCount
vorrei contare le occorrenze di ogni parola all’interno di una collezione di documenti
7
![Page 8: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/8.jpg)
Map & Reduce
map
most poetry ignores most people
(most,1) (people,1) (ignore,1)
map
reduce
reduce
1 ignore 1 ignores
4most 2people 2poetry
input data set intermediate
pairs output
data set
most people ignore most poetry
(most,1) (poetry,1)
(most,1) (poetry,1) (ignores,1) (most,1) (people,1)
shuf
fle
phas
e
doc1
.txt
do
c2.t
xt
8
![Page 9: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/9.jpg)
pseudo-codice //key:document name. value:document contents !map(String key, String value){!
!for each word w in value!! !EmitIntermediate(w, "1”)!
}!// key: a word. values: a list of counts!reduce(String key, Iterator values){!
!int result = 0;! !for each v in values{! !result += ParseInt(v);! ! !Emit(AsString(result));!
!}!}!!
9
![Page 10: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/10.jpg)
Cosa c’è di bello? • Abbiamo scomposto il conteggio delle parole in
sotto-programmi che possono essere associate a diversi task. ❒ ogni map task lavora su un sottoinsieme dell’input ❒ ogni reduce task lavora su una chiave (merge) ❒ i reduce usano l’out dei map => R dopo M
• A parte questo, l’esecuzione può procedere in parallelo!
I programmi scritti secondo il modello MapReduce sono intrinsecamente parallelizzabili
10
![Page 11: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/11.jpg)
Parallizzazione: map phase
macchina 1
macchina 2 macchina 3
macchina 4
doc1.txt! doc2.txt!
doc3.txt!
M M
M coordinatore
11
![Page 12: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/12.jpg)
Parallizzazione: shuffle phase
macchina 1
macchina 2 macchina 3
macchina 4
doc1.txt! doc2.txt!
doc3.txt!
M
M M
coordinatore
R
R
12
![Page 13: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/13.jpg)
Parallizzazione: reduce phase
macchina 1
macchina 2 macchina 3
macchina 4
doc1.txt! doc2.txt!
doc3.txt!
R
coordinatore
R most,4!people,2!ignore,1!
poetry,2!ignores,1!
13
![Page 14: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/14.jpg)
Cos’altro si può fare?
Distributed grep: voglio filtrare le linee di un documento (molto grande) in cui appare una parola X. 1. Il documento è spezzettato in chunk. 2. map: filtra le linee del suo chunk che
contengono X 3. reduce: funzione identità
14
![Page 15: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/15.jpg)
Cos’altro si può fare?
Frequenza di accesso a un URL: dato un log con l’elenco di URL visitati, voglio contare le frequenze di accesso per ogni URL. 1. Il documento è spezzettato in chunk. 2. map: analizza il suo chunk e per ogni URL
emette una coppia <URL, 1>!3. reduce: somma tutti i valori associati allo
stesso URL ed emette una coppia <URL,totalcount>!
15
![Page 16: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/16.jpg)
Cos’altro si può fare? Inverted index: dato un elenco di documenti voglio per ogni parola l’elenco ordinato dei documenti che la contengono. 1. Ogni documento è affidato ad un map task (o
splittato tra più map task). 2. map: per ogni parola w nel documento docY
emette <w, docY>!3. reduce: prende tutte le coppie con chiave w, fa
il sort dei documentID ed emette una coppia <w,list(docID)>!
16
![Page 17: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/17.jpg)
Cos’altro si può fare? Distributed sort: dato un elenco di record, ordinarli secondo un certo criterio. 1. Il documento è spezzettato in chunk 2. map: per ogni record estrae la chiave ed
emette delle coppie <key, value>!3. reduce: funzione identità
il sort funziona grazie ad un comportamento di default dei reduce, la garanzia di ordinamento, che vediamo più avanti...
17
![Page 18: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/18.jpg)
Cos’altro si può fare? • Reverse Web-link Graph[*] • Term-Vector per Host[*] • Iterative MapReduce • ecc…
[*]“MapReduce: simplified Data Processing on Large Clusters”, Dean, Ghemawat. Google Inc. 6° Symposium on Operating Systems Design & Implementation (OSDI2004)
18
![Page 19: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/19.jpg)
Nella pratica Esistono diversi tool per eseguire un programma MapReduce su architettura distribuita • Google MapReduce • Apache Hadoop • Apache Spark • Azure Twister
Permettono a programmatori senza alcuna esperienza di sistemi distribuiti di utilizzare facilmente le risorse di un data center per elaborare grandi moli di dati.
19
![Page 20: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/20.jpg)
Apache Hadoop
• open source • struttura e interfaccia relativamente
semplici • fatto di due sotto-componenti:
MapReduce Runtime (coordinatore) Hadoop Distributed File System (HDFS)
• vediamo com’è fatto Hadoop v1.x.x
20
![Page 21: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/21.jpg)
Namenode
HDFS file system distribuito che viene gestito da dei demoni con un’architettura master/slave
Datanode Datanode
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
il contenuto del file system NON è (in generale) replicato sui vari nodi, ma spezzettato tra i vari nodi
21
![Page 22: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/22.jpg)
copio un file dal file system locale in HDFS
Hadoop si occupa dello split in modo trasparente all’utente.
Namenode
Datanode Datanode
file.txt!
:~$ hadoop dfs !–copyFromLocal !/path/to/file.txt !/path/in/hdfs/file.txt
blk001! blk002!
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
file.txt!
22
![Page 23: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/23.jpg)
Verifico il contenuto di HDFS
• Il file mi viene mostrato come se fosse tutto intero su un unico supporto
• i comandi sono shell-like
hadoop@hadoop1:~$ hadoop dfs –ls!Found x items !... !drwxr-xr-x - hadoop root 2010-03-16 11:36 /user/hadoop/file.txt!... !
hadoop@hadoop1:~$ hadoop dfs –mkdir mydir!hadoop@hadoop1:~$ hadoop dfs –rmr mydir!!
23
![Page 24: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/24.jpg)
HDFS Può gestire autonomamente anche la replicazione dei dati. Parametro di configurazione: dfs.replication=2 Utile in caso di failure o per velocizzare i calcoli
Namenode
Datanode Datanode
file.txt!
002!
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
file.txt!
001!002! 001!
24
![Page 25: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/25.jpg)
Lancio un job wordcount (Hadoop v1.x.x.)
:~$ hadoop jar wordcount.jar WordCount indir outdir!
comando di lancio
contiene i .class
nome della classe che contiene il main
cartelle di input e
output nel dfs
Cosa succede in Hadoop quando lancio questo comando? Viene chiamato il componente MapReduce runtime.
25
![Page 26: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/26.jpg)
MapReduce runtime (v1.x.x.) Componente di Hadoop che si occupa di generare e coordinare i map/reduce task. Architettura master/slave
JobTracker
TaskTraker
TaskTraker
Il jobtraker assegna il lavoro da fare (map/reduce tasks) ai tasktraker cercando di garantire il più possibile la località dei dati
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
26
![Page 27: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/27.jpg)
MapReduce runtime: data locality JobTracker Namenode
TaskTraker Datanode
TaskTraker Datanode
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
blk001! blk002!
map blk001 map blk002 reduce key1to5 reduce key6to9
• Il jobtraker chiede al demone namenode: dov’è blk001?
• Il namenode risponde: su slave2
• jobtracker chiede al tasktracker 2: posso assegnarti un map task?
• tasktracker 2: sì • jobtracker alloca
map di blk001 a slave2
27
![Page 28: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/28.jpg)
Manca qualcosa…
value map key value key value key value key value key value key value key value key
…...
(key1, val)
(key8, val)
(key1, val)
(key8, val)
(key5, val)
(key1, val)
map
map
reduce
reduce
reduce
…... …...
value key value key value key value key value key value key value key value key
shuf
fle
28
![Page 29: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/29.jpg)
Manca qualcosa…
value map key value key value key value key value key value key value key value key
…...
(key1, val)
(key8, val)
(key1, val)
(key8, val)
(key5, val)
(key1, val)
map
map
reduce
reduce
reduce
…... …...
value key value key value key value key value key value key value key value key Come scelgo
quanti mapper e quanti reducer servono?
Come scelgo quanti map e reduce task servono?
29
![Page 30: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/30.jpg)
Manca qualcosa…
value map key value key value key value key value key value key value key value key
…...
(key1, val)
(key8, val)
(key1, val)
(key8, val)
(key5, val)
(key1, val)
map
map
reduce
reduce
reduce
…... …...
value key value key value key value key value key value key value key value key
shuf
fle
Come scelgo quali chiavi vanno a un reduce task e quali all’altro?
30
![Page 31: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/31.jpg)
Quanti M e R task? Vorremmo il maggior grado di parallelismo possibile => la risposta dipende da: 1. quale grado di parallelismo ho nella mia
architettura? Quanti core? con hyperthreading (capacità di eseguire 2 thread contemporaneamente sullo stesso core)?
2. quanti dati devo processare?
31
![Page 32: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/32.jpg)
Quanti M e R task? Hadoop permette di specificare il grado di parallelismo di ogni macchina in configurazione esprimendo il numero di slot. uno slot è un contenitore in cui può finire un map/reduce task in esecuzione su una macchina dual-core con hyperthreding specificherò: • n° map slots = 4 • n° reduce slot = 4
poiché la fase di map e la fase di reduce non si sovrappongono (quasi) mai
core1 core2
32
![Page 33: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/33.jpg)
Quanti map task lancio? Supponiamo di voler fare wordcount su un file da 1GB e di aver a 4 slave dual-core senza hyperthreading 8core totali => 8 slot Soluzione di default di Hadoop: • ogni map processa dei chunk di massimo 64MB • il file viene spezzato in blocchi di 64MB • Hadoop lancerà 1GB/64MB = 16 map task tutti insieme? NO, perché ho solo 8 slot!
M M
M M M M M M M M
M M M M M M 33
![Page 34: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/34.jpg)
Quanti map task lancio? è la soluzione migliore? forse no… 1GB/8core = 128MB Se avessi avuto dei chunk da 128MB, avrei fatto tutto in parallelo con soli 8 task e meno cambi di contesto. Hadoop permette di cambiare il valore del chunck di default in configurazione, ma • occorrono nozioni di computazione distribuita • effettivi miglioramenti si notano solo con molti TB ⇒ solitamente hadoop decide da solo il numero di map numero di map task = numero di chunck da 64MB in input
M M M M M M M M
34
![Page 35: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/35.jpg)
Quanti reduce task lancio? Questo lo decide l’utente! job.setNumReduceTasks(n);!Gli sviluppatori di hadoop consigliano due valori ottenuti statisticamente: 0.95 * n° tot di reduce slot!se i core sono tutti uguali oppure 1,75 * n° tot di reduce slot!se c’è qualche differenza di velocità tra i core delle varie macchine
R R R R
R R R R
R R R
35
![Page 36: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/36.jpg)
Manca qualcosa…
value map key value key value key value key value key value key value key value key
…...
(key1, val)
(key8, val)
(key1, val)
(key8, val)
(key5, val)
(key1, val)
map
map
reduce
reduce
reduce
…... …...
value key value key value key value key value key value key value key value key
shuf
fle
Come scelgo quali chiavi vanno a un reduce task e quali all’altro?
36
![Page 37: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/37.jpg)
Partitioning/Shuffle phase
map
most poetry ignores most people
(most,1) (people,1) (ignore,1)
map
reduce
reduce
1 ignore 1 ignores
4most 2people 2poetry
most people ignore most poetry
(most,1) (poetry,1)
(most,1) (poetry,1) (ignores,1) (most,1) (people,1)
doc1
.txt
do
c2.t
xt
Come scelgo quali chiavi vanno a un reducer e quali all’altro? ma sopratutto, come faccio a farlo velocemente?
37
![Page 38: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/38.jpg)
Naive partitioning La prima cosa che viene in mente è: • ordino la lista delle coppie intermedie per chiave:
[ignore,ignores,most,people,poetry] • divido la lista per il numero di reduce (bilancio il carico):
R=2 => R1=[ignore,ignores] R2=[most,people,poetry] Problemi: • l’ordinamento è sempre oneroso O(n log2 n) • posso decidere a che reducer mandare una coppia solo
dopo che è stato definito tutto l’elenco delle chiavi. Infatti se l’elenco fosse stato:
[ignore,ignores,most,people,pippo,poetry] R1=[ignore,ignores,most] R2=[people,pippo,poetry]
38
![Page 39: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/39.jpg)
Hadoop default partitioning Il suggerimento di Dean e Ghemawat è di usare una hash function. Per cui Hadoop implementa questo partitioner di default: public class HashPartitioner<K, V> !! ! ! ! !extends Partitioner<K, V> {!
public int getPartition(K key, V value, !! ! ! ! ! !int numReduceTasks) {!
return (key.hashCode() & Integer.MAX_VALUE) ! ! ! ! ! !% numReduceTasks;!
}!}!
bitwise AND per avere solo valori positivi
modulo per avere sempre un risultato nell’intervallo [0,numReduceTasks-1]
39
![Page 40: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/40.jpg)
Hadoop default partitioning Risultato: getPartition(“ignore”,”1”,2) = 0 getPartition(“ignores”,”1”,2) = 1 getPartition(“most”,”1”,2) = 1 getPartition(“pippo”,”1”,2) = 0 getPartition(“people”,”1”,2) = 1 getPartition(“poetry”,”1”,2) = 1
• nessun ordinamento • le coppie possono essere
inviate ai R man mano che vengono prodotte dai M, senza attendere che si sia definita tutta la lista.
40
![Page 41: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/41.jpg)
Hadoop default partitioning
macchina 1
macchina 2 macchina 3
macchina 4
doc1.txt! doc2.txt!
doc3.txt!
R
coordinatore
R ignore,1!pippo,1!
ignores,1!most,4!people,2!poetry,2!
sui grandi numeri questo garantisce anche un certo bilanciamento del carico
NB: garanzia di ordinamento. Il reducer emette sempre i risultati ordinati per chiave
41
![Page 42: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/42.jpg)
Cos’altro si può fare? Distributed sort: dato un elenco di record, ordinarli secondo un certo criterio. 1. Il documento è spezzettato in chunk 2. map: per ogni record estrae la chiave ed
emette delle coppie <key, value>!3. reduce: funzione identità
il sort funziona grazie alla garanzia di ordinamento. Tutte le coppie arrivano ad UN SOLO reduce task, che le trasmette immutate sull’output, ma in ordine.
42
![Page 43: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/43.jpg)
Combiner function In certi casi può essere vantaggioso far fare qualcosa di più ai map task anticipando il lavoro dei reducer.
Es: wordcount classico ❒ map emette per ogni w nel chunk , <w,1> ❒ reduce emette <w,sum(values)> !
Così ho • un sacco di traffico tra M e R: una coppia <w,1>
per ogni w nel documento. • Il reducer deve fare tutte le somme
43
![Page 44: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/44.jpg)
Combiner function Dean e Ghemawat osservano che: Se la funzione del reduce è associativa e commutativa, posso parzialmente anticiparla, facendola eseguire sulla stessa macchina del map task.
Es: wordcount ❒ map emette per ogni w nel chunk , <w,1> ❒ combiner (sulla stessa macchina del map): per ogni <w,1> fa la somma ed emette <w,S > = <w,sum(ones)> ❒ reduce emette <w,sum(S)>!
44
![Page 45: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/45.jpg)
Fault tolerance MapReduce si presta a implementare meccanismi di tolleranza ai guasti, INDIPENDENTI dal problema (grep, sort, wordcount,etc.) • Se il nodo Master si accorge di errori su uno slave,
riesegue Map e Reduce di quello slave da un’altra parte. • Se il nodo Master si accorge di errori sui blocchi, li
salta e riesegue Può non esser sufficiente per gli scopi del programmatore, ma c’è in tutte le implementazioni MapReduce.
45
![Page 46: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/46.jpg)
M
Elasticità Hadoop implementa anche meccanismi per scalare l’architettura a runtime.
JobTracker Namenode
TaskTraker Datanode
TaskTraker Datanode
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
blk001! blk002! blk003!
M M
46
![Page 47: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/47.jpg)
TaskTraker Datanode
M
Elasticità Hadoop implementa anche meccanismi per scalare l’architettura a runtime.
JobTracker Namenode
TaskTraker Datanode
TaskTraker Datanode
macchina 1 (master)
macchina 2 (slave) macchina 3 (slave)
blk001! blk002!
M M
macchina 4 (slave)
blk003!
47
![Page 48: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/48.jpg)
Elasticità Particolarmente utile se la mia infrastruttura sottostante mi consente di aggiungere/togliere risorse facilmente…
=> il cloud è il supporto migliore consente elasticità nel provisioning e deprovisioning di nodi per la computazione (virtual machines)
48
![Page 49: MapReduce: teoria e implementazione - unibo.itlia.disi.unibo.it/Courses/som1516/materiale/mapreduceSOM.pdf · 10 . Parallizzazione: map phase macchina 1 macchina 2 macchina 3 macchina](https://reader034.fdocument.pub/reader034/viewer/2022050214/5f5fff13ec7ba6265a3e5fda/html5/thumbnails/49.jpg)
In laboratorio ogni gruppo avrà a disposizione un cluster di 3 macchine virtuali configurate per eseguire dei job hadoop. • 1 master/slave
(jobtracker, namenode, tasktracker, datanode) • 2 slave
(tasktracker, datanode)
Vedremo • Creazione • Compilazione • Esecuzione di un programma MapReduce
49