introducere în mapreduce
TRANSCRIPT
![Page 1: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/1.jpg)
Introducere în MapReduce
![Page 2: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/2.jpg)
MapReduce
• Model de programare pentru exprimareacalculelor distribuite pe scară mare
• Framework de execuție pentru organizarea și execuția unor astfel de calculeO i l t ită H d• O implementare open-source numită Hadoop
![Page 3: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/3.jpg)
De ce date mari?
Source: Wikipedia (Everest)
![Page 4: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/4.jpg)
Cât de mari sunt datele ?
• Google procesa 20 PB zilnic (la nivelul anului 2008)
• Wayback Machine are 3 PB + 100 TB/lună(3/2009)F b k 2 5 PB d d t l tili t il• Facebook are 2.5 PB de date ale utilizatorilor + 15 TB/zi (4/2009) eBa are 6 5 PB de date ale tili atorilor + 50• eBay are 6.5 PB de date ale utilizatorilor + 50 TB/zi (5/2009)
• CERN’s LHC generează 15 PB pe an• CERN s LHC generează 15 PB pe an
![Page 5: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/5.jpg)
Maximilien Brice, © CERN
![Page 6: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/6.jpg)
Maximilien Brice, © CERN
![Page 7: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/7.jpg)
Cum putem scala la acest nivel ?
![Page 8: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/8.jpg)
Source: Wikipedia (IBM Roadrunner)
![Page 9: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/9.jpg)
Divide et Impera
“Work” PartiționareWork Partiționare
w1 w2 w3
“worker” “worker” “worker”
r1 r2 r3
“Result” Combinare
![Page 10: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/10.jpg)
Probleme cu paralelizarea
• Cum asignăm task-uri workerilor?• Ce se întâmplă dacă avem mai multe task-uri
d ât k i?decât workeri?• Ce se întâmplă dacă workerii trebuie să
t j lt t ți l ?partajeze rezultate parțiale?• Cum se pot agrega rezultatele parțiale?
C ti ă t ți k ii t i t?• Cum știm că toți workerii au terminat?• Ce se întâmplă dacă un worker moare?
Care e elementul comun tuturor acestor probleme?
![Page 11: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/11.jpg)
O temă comună?
• Problemele de paralelizare au la bază: Comunicația între workeri (ex., pentru
schimbul stărilor curente) Acces la resurse partajate (ex., date)
• Așadar avem nevoie de un mecanism de sincronizare
![Page 12: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/12.jpg)
Source: Ricardo Guimarães Herrmann
![Page 13: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/13.jpg)
Gestiunea mai multor Workeri
• Dificultăți cauzate de:ț Nu știm ordinea în care se execută workerii Nu știm când apar întreruperi în funcționarea workerilor N ti di î k ii ă d t l t j t Nu știm ordinea în care workerii accesează datele partajate
• Avem nevoie de : Semafoare (lock, unlock)( , ) Variabile de condiție (wait, notify, broadcast) Bariere
Alte probleme:• Alte probleme: Deadlock, livelock, race condition... Problema filozofilor, problema bărbierului...
• Morala: atenție sporită la problemele de gestiune!
![Page 14: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/14.jpg)
Instrumente curente
• Modele de programare Message PassingShared MemoryModele de programare Shared memory (pthreads) Message passing (MPI)
D i P tt
Mem
ory
• Design Patterns Master-slaves Producer-consumer flows
P1 P2 P3 P4 P5P1 P2 P3 P4 P5
Shared work queues
masterproducer consumer
l
work queue
slaves
producer consumer
![Page 15: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/15.jpg)
Probleme
• Concurența dificil de gestionatConcurența dificil de gestionat La nivelul unor datacentre (mai ales la nivelul mai
multor datacentre)Î În prezența defectelor
În termenii interacțiunilor multiple ale serviciilorR lit t• Realitatea: Multe soluții create ad-hoc, in-house, cod custom Dezvoltatorii scriu propriile biblioteci și cod dedicat Dezvoltatorii scriu propriile biblioteci și cod dedicat Accentul cade pe programator – are sarcina (dificilă)
să gestioneze toate aceste aspecte
![Page 16: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/16.jpg)
MapReduce
![Page 17: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/17.jpg)
Problemă “Large-Data” tipică
• Iterăm peste un număr mare de înregistrări• Extragem ceva de interes din fiecare înregistrare• Amestecăm și sortăm rezultatele intermediare• Agregăm rezultatele intermediare• Generăm rezultatele finale
Ideea de bază: furnizarea unei abstractizări funcționaleIdeea de bază: furnizarea unei abstractizări funcționale pentru aceste două operații
(Dean and Ghemawat, OSDI 2004)
![Page 18: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/18.jpg)
Rădăcini în Programarea FuncționalăFuncțională
f f f f fMap
g g g g gFold g g g g g
![Page 19: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/19.jpg)
MapReduce
• Programatorul specifică două funcții:map (k, v) → <k’, v’>*reduce (k’, v’) → <k’, v’>* Toate valorile având aceeași cheie sunt oate a o e a â d aceeaș c e e su t
trimite aceluiași reducer
• Framework-ul de execuție se ocupă deFramework ul de execuție se ocupă de toate celelalte detalii…
![Page 20: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/20.jpg)
![Page 21: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/21.jpg)
MapReduce
• Programatorul specifică două funcții:map (k, v) → <k’, v’>*reduce (k’, v’) → <k’, v’>* Toate valorile având aceeași cheie sunt oate a o e a â d aceeaș c e e su t
trimite aceluiași reducer
• Framework-ul de execuție se ocupă deFramework ul de execuție se ocupă de toate celelalte detalii…
Ce reprezintă celelalte “detalii”?Ce reprezintă celelalte detalii ?
![Page 22: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/22.jpg)
Mediul de execuție MapReduceMapReduce
• Gestiunea planificăriiGestiunea planificării Asignează workeri pentru task-urile de map și reduce
• Gestiunea distribuției de date Mută procesele lângă datele de procesat
• Gestiunea sincronizării G ti ă t â t i t Gestionează strângerea, sortarea și amestecarea
datelor intermediare• Gestiunea erorilor Detectează defectarea workerilor și repornirea
acestora• Totul are loc peste un FS distribuitTotul are loc peste un FS distribuit
![Page 23: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/23.jpg)
MapReduce
Programatorul specifică două funcții:• Programatorul specifică două funcții:map (k, v) → <k’, v’>*reduce (k’, v’) → <k’, v’>* Toate valorile având aceeași cheie sunt trimite aceluiași reducer
• Framework-ul de execuție se ocupă de toate celelalte detalii…Ε În realitate… tot programatorii specifică:partition (k’, number of partitions) → partiția pentru k’ Adesea un simplu hash al cheii, ex. hash(k’) mod n( ) Divizarea spațiului cheilor pentru operațiile paralele de reducecombine (k’, v’) → <k’, v’>* Mini-reduceri ce rulează în memorie după faza de mapMini reduceri ce rulează în memorie după faza de map Folosit ca optimizare pentru reducerea traficului peste rețea
![Page 24: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/24.jpg)
![Page 25: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/25.jpg)
“Hello World”: Word Count
Map(String docid, String text):for each word w in text:
Emit(w 1);Emit(w, 1);
Reduce(String term, Iterator<Int> values):int sum = 0;for each v in values:
sum += v;;Emit(term, value);
![Page 26: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/26.jpg)
MapReduce înseamnă…
• Modelul de programare• Framework de execuțieFramework de execuție• Implementare specifică
![Page 27: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/27.jpg)
Implementări MapReduce
• Google has a proprietary implementation in C++ Bindings in Java Python Bindings in Java, Python
• Hadoop is an open-source implementation in JavaJava Development led by Yahoo, used in production Now an Apache projectp p j Rapidly expanding software ecosystem
• Lots of custom research implementationsp For GPUs, cell processors, etc.
![Page 28: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/28.jpg)
Implementări MapReduce
G l i l t i t ă î• Google are o implementare proprietară în C++ Cu suport pentru Java Python Cu suport pentru Java, Python
• Hadoop este o implementare open-source pentru Javapentru Java Dezvoltarea condusă de Yahoo Astăzi proiect Apachep p
• Diverse alte implementări (unele orientate spre cercetare) Pentru GPU-uri, procesoare CELL, etc.
![Page 29: Introducere în MapReduce](https://reader030.vdocuments.us/reader030/viewer/2022012503/617ccb055f75d64a74598dc9/html5/thumbnails/29.jpg)
Adapted from (Dean and Ghemawat, OSDI 2004)