Il paradigma MapReduce

Il paradigma MapReduce è stato creato nel 2003 per consentire l'elaborazione di grandi insiemi di dati in modo massicciamente parallelo. L'obiettivo del modello MapReduce è quello di semplificare l'approccio alla trasformazione e all'analisi di grandi insiemi di dati, nonché di consentire agli sviluppatori di concentrarsi sugli algoritmi anziché sulla gestione dei dati. Il modello consente una semplice implementazione di algoritmi data-parallel. Esistono diverse implementazioni di questo modello, tra cui l'approccio di Google, programmato in C++, e l'implementazione di Hadoop di Apache, programmata in Java. Entrambi funzionano su grandi cluster di hardware di base in un ambiente condiviso e peer-to-peer.

Il modello MapReduce consiste in due fasi: la fase di mappatura e la fase di riduzione, espresse rispettivamente dalla funzione di mappatura e dalla funzione di riduzione. Le funzioni sono specificate dal programmatore e sono progettate per operare su coppie chiave/valore come input e output. Le chiavi e i valori possono essere tipi di dati semplici, come un numero intero, o più complessi, come una transazione commerciale.
Associazione
La funzione map, detta anche task map, elabora una singola coppia chiave/valore in ingresso e produce un insieme di coppie chiave/valore intermedie.
Riduci
La funzione di riduzione, detta anche task di riduzione, consiste nel prendere tutte le coppie chiave/valore prodotte nella fase map che condividono la stessa chiave intermedia e produrre zero, uno o più elementi di dati.

Si noti che le funzioni map e reduce non si occupano della parallelizzazione e dell'esecuzione dei lavori MapReduce. Questa è la responsabilità del modello MapReduce, che si occupa automaticamente della distribuzione dei dati di input, nonché della programmazione e della gestione delle attività di map e reduce.