Sunteți pe pagina 1din 15

MapReduce

Iordache Sergiu 332CA


sergiu@rosedu.org
Agenda
• Ce e MapReduce
• Programare functională
• Cum funcționează
• Toleranță la defecțiuni
• Optimizări
• Implementări
• Exemplu MapReduce
Ce e MapReduce?
• MapReduce – framework software pentru calcul
distribuit pe arhitecturi MIMD (clustere/grid-uri)
• Google
• Programare funcțională (Map și Reduce)
• Procesare pe seturi foarte mari de date
• Mecanisme de asigurare a unui calcul corect
Remember PP
• Map – aplică o funcție unei liste
• Reduce – procesează o listă obținând un
rezultat
• Fără efecte laterale!
• Rezultă paralelizare maximă.
Cum funcționeaza?
• Tipic rulat pe sute/mii de calculatoare
“obișnuite”
• Un master planifica workerii
• De obicei mult mai multe task-uri decât
mașini(oferă diverse avantaje)
Cum funcționeaza?(2)
• Datele sunt structurate in perechi (cheie,
valoare)
• Map(k_in, val) -> listă(k_out,
val_intermediară)
• Reduce(k_out, listă(val_intermediare)) ->
listă(valori ieșire)
Toleranța la defecțiuni
• Exista mecanisme de tolerare a
defecțiunilor
• Sanse foarte mici sa de defecteze
master-ul(de obicei nu se tratează cazul)
• Daca se defectează worker-ul se execută
task-urile in progres sau cele efectuate.
Optimizări
• Duplicarea task-urilor spre finalul
procesării.
• Localizarea eficentă a datelor în sistemul
distribuit.
• Renunțarea prelucrării pentru programele
care nu funcționează.
• Ordonarea rezultatelor
• Funcții de combinare
Implementări
Nume Limbaj Licență Altele

Google C++ + Propietar + GFS


Java/Python(jobs)
Hadoop Java FLOSS + HDFS

Greenplum - Comercial

Disco Erlang + Python FLOSS Nokia


(jobs)
mapreduce- C FLOSS Cell BE
cell
Mars CUDA ?
Toate logo-urile sunt propietatea respectivelor companii
Exemplul clasic MapReduce
map(String name, String document):
// key: document name
// value: document contents
for each word w in document:
EmitIntermediate(w, 1);
reduce(String word, Iterator partialCounts):
// key: a word
// values: a list of aggregated partial
counts
int result = 0;
for each v in partialCounts:
result += ParseInt(v);
Emit(result);
Intrebări?
Link-uri
• http://en.wikipedia.org/wiki/MapReduce
• http://labs.google.com/papers/mapreduce.htm
• http://wiki.apache.org/hadoop/HadoopMapRed
Surse poze
• (3) http://www.flickr.com/photos/mybloodyself/501572092/
• (4) http://www.flickr.com/photos/88319047@N00/3148384136/
• (5,6,7) http://www.flickr.com/photos/antichrist/3427853501/
• (8,9) http://www.flickr.com/photos/bcostin/94192319/
• (13) http://www.flickr.com/photos/oberazzi/318947873/
• (1,2,12,14,15) http://www.flickr.com/photos/gavlart/2475205408/
Poze sub licență Creative Commons
Prezentare sub licență Creative Commons Attribution-Noncommercial-
Share Alike 2.0
http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en

S-ar putea să vă placă și