MapReduce

Da Wikipedia, l'enciclopedia libera.

MapReduce è un framework software brevettato e introdotto da Google per supportare la computazione distribuita su grandi quantità di dati in cluster di computer. Il framework è ispirato alle funzioni map e reduce usate nella programmazione funzionale, sebbene il loro scopo nel framework MapReduce non è lo stesso che nella forma originale. Le librerie MapReduce sono scritte in C++, C#, Erlang, Java, Ocaml, Perl, Python, Ruby, F# e altri linguaggi di programmazione.

Panoramica[modifica | modifica sorgente]

Passo "Map": Il nodo principale prende l'input, lo partiziona in sotto-problemi più piccoli, e li distribuisce ai nodi operativi. Un nodo operativo potrebbe fare questo nuovamente, portando a una struttura ad albero multi-livello. Il nodo operativo processa i problemi più piccoli, e restituisce la risposta al suo nodo principale.

Passo "Reduce": Il nodo principale una volta prese le risposte di tutti i sotto-problemi le combina per ottenere una risposta o uscita, la risposta al problema che si tenta di risolvere.

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 significativamente a più grandi 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 sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

Articoli
Libri
Educational courses