MapReduce
MapReduceè unframeworksoftware brevettato e introdotto daGoogleper supportare la computazione distribuita su grandi quantità di dati inclusterdicomputer.Il framework è ispirato alle funzionimapereduceusate nellaprogrammazione funzionale,sebbene il loro scopo nel framework MapReduce non sia lo stesso che nella forma originale. LelibrerieMapReduce sono scritte inC++,C#,Erlang,Java,OCaml,Perl,Python,Ruby,F#e altrilinguaggi di programmazione.
Panoramica
[modifica|modifica wikitesto]Il framework MapReduce è composto da diverse funzioni per ogni step:
- Input Reader
- Map Function
- Partition Function
- Compare Function
- Reduce Function
- Output Writer
L'Input Reader legge i dati dallamemoria di massa,che generalmente è unfile system distribuito,e divide l'input in diversi S split (tipicamente da 64 MB e 128 MB) che vengono successivamente distribuiti a M macchine di un cluster che hanno funzione di Map. L'Input Reader ha inoltre il compito di generare una coppia (chiave, valore). Le macchine di cluster vengono suddivise in N fra master e slave: un master che si occupa di individuare gli slave in idle e di assegnargli un task, N-1 slave che ricevono i task assegnati dal nodo master. In tutto vengono assegnate M task con funzione di Map e R task con funzione di Reduce. Lo slave a cui è stato assegnato un M-esimo task legge il contenuto dell'input, estrae le coppie (chiave, valore) dall'input e le passa alla funzione di Map definita dall'utente che genera zero o più coppie (chiave, valore) in uscita. Queste coppie vengono bufferizzate in memoria. Periodicamente le coppie bufferizzate vengono memorizzate a disco e partizionate in R sezioni dalla partition fuction. Gli indirizzi delle sezioni partizione vengono poi passate al nodo master che è responsabile di girare le locazioni agli slave che processano funzioni di riduzione. Tra lo slave con funzione di Map e quello con funzione di Reduce vengono riordinate tutte le coppie in modo da trovare quelle che puntano allo stesso valore che spesso hanno anche la stessa chiave. Trovate quelle che puntano allo stesso valore con la funzione di comparazione si fa un'operazione di merge. Per ogni chiave viene associato uno slave con funzione di Reduce che iterando su tutte le chiavi, prende i valori con la stessa chiave e li passa alla funzione di Reduce definita dall'utente che genera zero o più uscite. L'Output Writer avrà il compito di scrivere i risultati in memoria di massa e una volta finiti tutti i task di Map e Reduce il master avrà il compito di attivare l'applicativo utente.
Il sistema di runtime si occupa del partitioning dei dati in ingresso, dello scheduling dell'esecuzione su un set di macchine e della gestione della comunicazione tra di esse. Il vantaggio della Map Reduce è che permette una elaborazione distribuita delle operazioni di mappatura e riduzione. Fornendo ogni operazione di map indipendente dalle altre, tutte le map possono essere eseguite in parallelo - sebbene nella pratica ciò è limitato dalla sorgente dati e/o dal numero di CPU vicine a quel dato. Alla stessa maniera, una serie di "riduttori" può eseguire la fase di riduzione - tutto quello che è richiesto è che le uscite della map la quale condivide la stessa chiave sia presentata allo stesso riduttore, allo stesso tempo. Mentre questo processo può spesso apparire inefficiente comparato agli algoritmi che sono più sequenziali, MapReduce può essere applicato a maggiori quantità di dati che i server possono gestire comodamente - una grande server farm può usare MapReduce per ordinare petabyte di dati in sole poche ore. Il parallelismo offre anche la possibilità di recuperare dati dal parziale fallimento di server o di dispositivi di archiviazione durante l'operazione se qualche map o reduce fallisce il lavoro può essere riprogettato, assumendo che i dati in entrata siano ancora disponibili.
Voci correlate
[modifica|modifica wikitesto]Altri progetti
[modifica|modifica wikitesto]- Wikimedia Commonscontiene immagini o altri file suMapReduce
Collegamenti esterni
[modifica|modifica wikitesto]- (EN)MapReduce,suEnciclopedia Britannica,Encyclopædia Britannica, Inc.
- Articoli
- (EN)"Interpreting the Data: Parallel Analysis with Sawzall"— paper by Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan; fromGoogle Labs
- (EN)"Evaluating MapReduce for Multi-core and Multiprocessor Systems"— paper by Colby Ranger, Ramanan Raghuraman, Arun Penmetsa, Gary Bradski, and Christos Kozyrakis; fromStanford University
- (EN)"Why MapReduce Matters to SQL Data Warehousing"— analysis related to the August, 2008 introduction of MapReduce/SQL integration byAster Data SystemsandGreenplum
- (EN)"MapReduce for the Cell B.E. Architecture"— paper by Marc de Kruijf and Karthikeyan Sankaralingam; fromUniversity of Wisconsin–Madison
- (EN)"Mars: A MapReduce Framework on Graphics Processors"— paper by Bingsheng He, Wenbin Fang, Qiong Luo, Naga K. Govindaraju, Tuyong Wang; fromHong Kong University of Science and Technology;published in Proc. PACT 2008. It presents the design and implementation of MapReduce on graphics processors.
- (EN)"Map-Reduce-Merge: Simplified Relational Data Processing on Large Clusters"— paper by Hung-Chih Yang, Ali Dasdan, Ruey-Lung Hsiao, and D. Stott Parker; fromYahooandUCLA;published in Proc. of ACM SIGMOD, pp. 1029–1040, 2007. (This paper shows how to extend MapReduce for relational data processing.)
- (EN) FLuX: theFault-tolerant,Load BalancingeXchange operator fromUC Berkeleyprovides an integration of partitioned parallelism with process pairs. This results in a more pipelined approach than Google's MapReduce with instantaneous failover, but with additional implementation cost.
- (EN)"A New Computation Model for Rack-Based Computing"— paper by Foto N. Afrati; Jeffrey D. Ullman; fromStanford University;Not published as of Nov 2009. This paper is an attempt to develop a general model in which one can compare algorithms for computing in an environment similar to what map-reduce expects.
- (EN) Yi Shan Bo Wang, Jing Yan, Yu Wang, Ningyi Xu e Huazhong Yang,FPMR: MapReduce framework on FPGA - Published in: FPGA '10 Proceedings of the 18th annual ACM/SIGDA international symposium on Field programmable gate arrays,suportal.acm.org,pp. 93 - 102.URL consultato il 13 ottobre 2022(archiviato dall'url originaleil 23 febbraio 2013).
- (EN)"Tiled-MapReduce: Optimizing Resource Usages of Data-parallel Applications on Multicore with Tiling"-- paper by Rong Chen, Haibo Chen and Binyu Zang fromFudan University;published in Proc. PACT 2010. It presents the Tiled-MapReduce programming model which optimizes resource usages of MapReduce applications on multicore environment using tiling strategy.
- (EN)"Scheduling divisible MapReduce computations"-- paper by Joanna Berlińska fromAdam Mickiewicz Universityand Maciej Drozdowski fromPoznan University of Technology;Journal of Parallel and Distributed Computing 71 (2011) 450-459, doi:10.1016/j.jpdc.2010.12.004. It presents scheduling and performance model of MapReduce.
- Libri
- (EN) Jimmy Lin and Chris Dyer."Data-Intensive Text Processing with MapReduce"Archiviatoil 10 febbraio 2011 inInternet Archive.(manuscript)
- Educational courses
- (EN)Cluster Computing and MapReducecourse fromGoogle Code Universitycontains video lectures and related course materials from a series of lectures that was taught to Google software engineering interns during the Summer of 2007.
- (EN)MapReduce in a Weekcourse fromGoogle Code Universitycontains a comprehensive introduction to MapReduce including lectures, reading material, and programming assignments.
- (EN)MapReduce courseArchiviatoil 30 agosto 2009 inInternet Archive., taught by engineers ofGoogleBoston, part of 2008 Independent Activities Period atMIT.
Controllo di autorità | VIAF(EN)305041139·LCCN(EN)no2013077469·J9U(EN,HE)987007371891305171 |
---|