Prima di tutto shuffling
è il processo di trasferimento dei dati dai mappatori ai riduttori, quindi penso sia ovvio che sia necessario per i riduttori, poiché altrimenti non potrebbero avere alcun input (o input da ogni mappatore) . Il mescolamento può iniziare anche prima che la fase della mappa sia terminata, per risparmiare un po 'di tempo. Ecco perché puoi vedere uno stato di riduzione maggiore dello 0% (ma inferiore al 33%) quando lo stato della mappa non è ancora al 100%.
Sorting
fa risparmiare tempo al riduttore, aiutandolo a distinguere facilmente quando deve iniziare una nuova attività di riduzione. Avvia semplicemente una nuova attività di riduzione, quando la chiave successiva nei dati di input ordinati è diversa dalla precedente, per dirla semplicemente. Ogni attività di riduzione richiede un elenco di coppie chiave-valore, ma deve chiamare il metodo reduce () che accetta un input dell'elenco di chiavi (valore), quindi deve raggruppare i valori per chiave. È facile farlo, se i dati di input sono preordinati (localmente) nella fase della mappa e semplicemente ordinati per fusione nella fase di riduzione (poiché i riduttori ottengono i dati da molti mappatori).
Partitioning
, che hai menzionato in una delle risposte, è un processo diverso. Determina in quale riduttore verrà inviata una coppia (chiave, valore), output della fase di mappatura. Il partizionatore predefinito utilizza un hash sulle chiavi per distribuirle alle attività di riduzione, ma puoi sovrascriverlo e utilizzare il tuo partizionatore personalizzato.
Un'ottima fonte di informazioni per questi passaggi è questo tutorial di Yahoo .
Una bella rappresentazione grafica di questo è la seguente (shuffle è chiamato "copia" in questa figura):
Notare che shuffling
e sorting
non vengono eseguiti affatto se si specificano riduttori zero (setNumReduceTasks (0)). Quindi, il lavoro MapReduce si ferma alla fase della mappa e la fase della mappa non include alcun tipo di ordinamento (quindi anche la fase della mappa è più veloce).
AGGIORNAMENTO: Dato che stai cercando qualcosa di più ufficiale, puoi anche leggere il libro di Tom White "Hadoop: The Definitive Guide". Ecco la parte interessante della tua domanda.
Tom White è un committer di Apache Hadoop dal febbraio 2007 ed è membro della Apache Software Foundation, quindi immagino che sia abbastanza credibile e ufficiale ...