En primer lugar shuffling
está el proceso de transferencia de datos de los mapeadores a los reductores, por lo que creo que es obvio que es necesario para los reductores, ya que de lo contrario, no podrían tener ninguna entrada (o entrada de cada mapeador) . La reproducción aleatoria puede comenzar incluso antes de que finalice la fase del mapa, para ahorrar algo de tiempo. Es por eso que puede ver un estado de reducción superior al 0% (pero inferior al 33%) cuando el estado del mapa aún no es del 100%.
Sorting
ahorra tiempo al reductor, lo que le ayuda a distinguir fácilmente cuándo debe comenzar una nueva tarea de reducción. Simplemente inicia una nueva tarea de reducción, cuando la siguiente clave en los datos de entrada ordenados es diferente a la anterior, en pocas palabras. Cada tarea de reducción toma una lista de pares clave-valor, pero tiene que llamar al método reduce () que toma una entrada de lista clave (valor), por lo que tiene que agrupar valores por clave. Es fácil hacerlo si los datos de entrada se preordenan (localmente) en la fase de mapa y simplemente se combinan en la fase de reducción (ya que los reductores obtienen datos de muchos mapeadores).
Partitioning
, que mencionaste en una de las respuestas, es un proceso diferente. Determina en qué reductor se enviará un par (clave, valor), salida de la fase del mapa. El particionador predeterminado usa un hash en las claves para distribuirlas a las tareas de reducción, pero puede anularlo y usar su propio particionador personalizado.
Una gran fuente de información para estos pasos es este tutorial de Yahoo .
Una buena representación gráfica de esto es la siguiente (la reproducción aleatoria se llama "copiar" en esta figura):
Tenga en cuenta que shuffling
y sorting
no se realizan en absoluto si especifica reductores cero (setNumReduceTasks (0)). Luego, el trabajo MapReduce se detiene en la fase del mapa y la fase del mapa no incluye ningún tipo de clasificación (por lo que incluso la fase del mapa es más rápida).
ACTUALIZACIÓN: Ya que está buscando algo más oficial, también puede leer el libro de Tom White "Hadoop: The Definitive Guide". Aquí está la parte interesante de su pregunta.
Tom White ha sido un comprometido con Apache Hadoop desde febrero de 2007, y es miembro de Apache Software Foundation, así que supongo que es bastante creíble y oficial ...