MapReduce aiuta a suddividere i progetti di trattamento dei dati in parti più piccole in modo che possano essere eseguite più rapidamente.
L'utilizzo di un processore per analizzare un file enorme con terabyte o petabyte di dati potrebbe richiedere, ad esempio, 10 ore. Un lavoro MapReduce può dividere lo stesso file di dati in 10 compiti che vengono eseguiti in parallelo su 10 processori. L'esecuzione di questo lavoro potrebbe richiedere al massimo un'ora. I dati possono essere aggregati dai nodi di calcolo distribuiti per produrre un risultato.
Sebbene il mapping e la riduzione siano le funzioni fondamentali del modello MapReduce, il processo complessivo include alcuni passaggi aggiuntivi.
Input
Un'applicazione MapReduce accetta dati di input, che possono includere dati strutturati o non strutturati. Le applicazioni MapReduce di solito funzionano con file input memorizzati nel file system distribuito Hadoop (HDFS), ma il modello può funzionare anche con altre fonti di dati. (Per ulteriori informazioni, vedere "MapReduce nell’ecosistema Hadoop.")
Per un lavoro specifico, il framework MapReduce aiuta a selezionare server distribuiti, a gestire le comunicazioni e i trasferimenti di dati e a supportare la tolleranza agli errori e la ridondanza.
Suddivisione
I dati di input sono suddivisi in blocchi più piccoli. Questi blocchi vengono distribuiti ai mappatori, le funzioni che eseguono la mappatura nella fase successiva, situati in vari nodi di calcolo. Il framework MapReduce mira a un'assegnazione più o meno uniforme dei dati tra i mappatori per un bilanciamento del carico efficiente.
Mappatura
Su ogni nodo, la funzione di mappa elabora i dati ricevuti, convertendoli in coppie chiave/valore.
Il numero totale di mappatori viene determinato all'interno del framework Hadoop, in base al volume totale di dati e ai blocchi di memoria disponibili su ciascun mapper. I parametri per i mappatori, i riduttori e i formati di output possono essere impostati all'interno del cluster Hadoop.
Shuffling
Il framework Hadoop ordina gli output della mappa e assegna tutte le coppie chiave/valore con la stessa "chiave" (argomento) allo stesso riduttore. Ad esempio, in un set di dati sulle città e sulle loro temperature massime giornaliere, tutti i dati con la chiave "Tokyo" verrebbero inseriti nello stesso riduttore.
Il riduttore, come suggerisce il nome, è la funzione che esegue la fase di riduzione.
Riduzione
Le funzioni di riduzione elaborano le coppie chiave/valore emesse dai mappatori. Questo può comportare l'unione, la tabulazione o l'esecuzione di altre operazioni sui dati, a seconda del tipo di trattamento richiesto.
La mappatura e la riduzione possono essere effettuate sullo stesso set di server, ma questo è facoltativo.
Risultato
Ogni riduttore fornisce i risultati della sua elaborazione all'HDFS o ad altri storage dei dati.