2012-05-17 18 views
23

Estoy tratando de confirmar mi comprensión de la diferencia entre 0 reductor y reductor de identidad.hadoop: ¿diferencia entre 0 reductor y reductor de identidad?

  • 0 significa reducir reductor se saltará el paso y la salida asignador será el último out
  • Identidad reductor significa entonces barajar/clasificación aún llevará a cabo?

Respuesta

34

Lo entiendo es correcto. Lo definiría de la siguiente manera: Si no necesita ordenar los resultados del mapa, establece 0 reducido y el trabajo se llama solo mapa.
Si necesita ordenar los resultados de la asignación, pero no necesita ninguna agregación, elige el reductor de identidad.
Y para completar la imagen, tenemos un tercer caso: necesitamos agregación y, en este caso, necesitamos reductor.

3

Depende de los requisitos de su negocio. Si está haciendo una palabra, debe reducir la salida de su mapa para obtener un resultado total. Si solo desea cambiar las palabras a mayúsculas, no necesita reducirlas.

4

Otro caso de uso para utilizar Identity Reducer es combinar todos los resultados en < # de reductores> archivos de salida. Esto puede ser útil si usa Amazon Web Services para escribir directamente en S3, especialmente si el resultado del mapper es pequeño (por ejemplo, un grep/búsqueda de un registro) y tiene muchos correlacionadores (por ejemplo, 1000).

+0

Hola Dolan, ¿podrías explicarnos un poco sobre el uso de Identity Reducer para combinar resultados en menos archivos? Me enfrentaba a problemas similares: tener muchos archivos pequeños generados por trabajos solo de mapas. ¿Sería menos eficiente en comparación con los trabajos de solo mapas? –

+0

Yitong: hay gastos indirectos adicionales cuando se usan los Reductores de Identidad para ninguno porque las salidas de Mapper se deben dividir en X segmentos y luego se envían a los reductores X (es decir, donde X es el número deseado de archivos de salida), ordenados, y luego guardado en el directorio de salida en HDFS/S3/etc. Si tiene un montón de datos, deberá tener cuidado con esta sobrecarga adicional porque puede ser significativo en algunos casos. Alternativamente, si guarda en HDFS, puede usar 'hdfs cat' para transmitir la salida de todos los archivos en una ubicación. No sé si S3 tiene un mecanismo de lectura de flujo similar. –

3

La principal diferencia entre "No Reductor" (mapred.reduce.tasks = 0) y "reductor estándar", que es IdentityReducer (mapred.reduce.tasks = 1, etc.) es cuando se utiliza "No reductor "no hay partición & procesos de mezcla después de la etapa MAP. Por lo tanto, en este caso obtendrá salida "pura" de sus mapeadores sin ningún procesamiento posterior. Ayuda en el desarrollo y depuración de puposas, pero no solo.

Cuestiones relacionadas