Pregunta ¿Cuándo comienzan las tareas de reducción en Hadoop?


En Hadoop, ¿cuándo comienzan las tareas de reducción? ¿Comienzan después de que se completa un cierto porcentaje (umbral) de mapeadores? Si es así, ¿este umbral es fijo? ¿Qué tipo de umbral se usa normalmente?


73
2017-07-26 15:25


origen


Respuestas:


La fase de reducción tiene 3 pasos: mezclar, ordenar, reducir. Shuffle es donde los datos son recolectados por el reductor de cada mapeador. Esto puede suceder mientras los mapeadores están generando datos ya que solo es una transferencia de datos. Por otro lado, ordenar y reducir solo puede comenzar una vez que todos los mapeadores hayan terminado. Puedes decir cuál está haciendo MapReduce al mirar el porcentaje de finalización del reductor: 0-33% significa que está haciendo un shuffle, 34-66% es de tipo, 67% -100% es reducido. Esta es la razón por la cual sus reductores a veces parecerán "atascados" al 33%: está esperando que los mapeadores terminen.

Los reductores comienzan a barajar en función de un umbral de porcentaje de correlacionadores que han finalizado. Puede cambiar el parámetro para que los reductores comiencen tarde o temprano.

¿Por qué empezar los reductores temprano es algo bueno? Debido a que extiende la transferencia de datos de los mapeadores a los reductores a lo largo del tiempo, lo cual es bueno si su red es el cuello de botella.

¿Por qué empezar los reductores temprano es algo malo? Debido a que "hog up" reducen las ranuras mientras solo copian datos y esperan que los mapeadores terminen. Otro trabajo que comienza más tarde y que realmente utilizará reducir ranuras ahora no puede usarlos.

Puede personalizar el inicio de los reductores cambiando el valor predeterminado de mapred.reduce.slowstart.completed.maps en mapred-site.xml. Un valor de 1.00 esperará a que todos los mapeadores terminen antes de comenzar los reductores. Un valor de 0.0 comenzará los reductores de inmediato. Un valor de 0.5 iniciará los reductores cuando la mitad de los mapeadores estén completos. También puedes cambiar mapred.reduce.slowstart.completed.maps en una base de trabajo por trabajo. En las nuevas versiones de Hadoop (al menos 2.4.1) se llama al parámetro mapreduce.job.reduce.slowstart.completedmaps (gracias, usuario yegor256).

Por lo general, me gusta mantener mapred.reduce.slowstart.completed.maps encima 0.9 si el sistema tiene varias tareas ejecutándose a la vez. De esta forma, el trabajo no reduce los reductores cuando no están haciendo otra cosa que copiar datos. Si solo tiene un trabajo ejecutándose a la vez, haciendo 0.1 probablemente sería apropiado.


188
2017-07-26 16:27



La fase de reducción puede comenzar mucho antes de que se llame un reductor. Tan pronto como un "mapeador" termina el trabajo, los datos generados son sometidos a una cierta clasificación y mezcla (que incluye llamadas al combinador y al particionador). La "fase" del reductor comienza en el momento en que se inicia el procesamiento de datos del correlacionador. A medida que se realice este procesamiento, verá un progreso en el porcentaje de reductores. Sin embargo, ninguno de los reductores ha sido llamado aún. Dependiendo del número de procesadores disponibles / usados, la naturaleza de los datos y el número de reductores esperados, es posible que desee cambiar el parámetro descrito por @Donald-miner anteriormente.


4
2017-12-18 00:56



Tanto como lo entiendo Reduzca la fase de inicio con la fase de mapa y siga consumiendo el registro de los mapas. Sin embargo, dado que hay una fase de ordenación y reproducción aleatoria después de la fase del mapa, todas las salidas deben clasificarse y enviarse al reductor. Entonces, lógicamente, usted puede imaginar que la fase de reducción comienza solo después de la fase del mapa, pero en realidad para los reductores de la razón de rendimiento también se inicializan con los mapeadores.


1
2017-07-26 16:06



El porcentaje que se muestra para la fase de reducción es en realidad la cantidad de datos copiados de la salida de los mapas a los directorios de entrada de los reductores. ¿Para saber cuándo comienza esta copia? Es una configuración que puede establecer como Donald mostró arriba. Una vez que todos los datos se copian en los reductores (es decir, se reduce al 100%) es cuando los reductores comienzan a funcionar y, por lo tanto, pueden congelarse en "100% de reducción" si el código de reductores consume E / S o CPU.


0
2017-09-30 16:46



Considere un ejemplo de WordCount para comprender mejor cómo funciona la tarea de reducir mapa. Supongamos que tenemos un archivo grande, digamos una novela, y nuestra tarea es encontrar el número de veces que aparece cada palabra en el archivo. Como el archivo es grande, puede dividirse en diferentes bloques y replicarse en diferentes nodos de trabajadores. El trabajo de recuento de palabras se compone de tareas de mapa y reducir. La tarea de mapa toma como entrada cada bloque y produce un par clave-valor intermedio. En este ejemplo, dado que estamos contando el número de ocurrencias de palabras, el mapeador mientras procesa un bloque daría como resultado resultados intermedios de la forma (palabra1, cuenta1), (palabra2, cuenta2) etc. Los resultados intermedios de todos los mapeadores son pasó a través de una fase aleatoria que reordenará el resultado intermedio.

Supongamos que nuestro resultado del mapa de diferentes mapeadores es de la siguiente forma:

Mapa 1: - (es, 24) (era, 32) (y, 12)

Map2: - (mi, 12) (es, 23) (era, 30)

Las salidas del mapa se ordenan de tal manera que los mismos valores clave se dan al mismo reductor. Aquí significaría que las teclas correspondientes a es, etc, van al mismo reductor. Es el reductor que produce la salida final, que en este caso sería: - (y, 12) (es, 47) (mi, 12) (era, 62)


0
2018-04-14 09:25



Reducir comienza solo después de que todo el mapeador pescó en su tarea, Reducer tiene que comunicarse con todos los mapeadores, así que tiene que esperar hasta que el último mapeador haya terminado su tarea. Sin embargo, el mapeador comienza a transferir datos al momento en que completa su tarea.


0
2017-11-25 06:45



Cuando Mapper termina su tarea, Reducer comienza su trabajo para Reducir los Datos, este es un trabajo de Mapreduce.


0
2017-10-30 09:02



Las tareas del reductor comienzan solo después de completion de todos los mapeadores.

Pero la transferencia de datos ocurre después each Mapa. En realidad, es una operación de extracción.

Eso significa que cada vez que Reducer preguntará a cada tarea de mapas si tienen algunos datos para recuperar de Map. Si encuentran que un asignador ha completado su tarea, Reducer extraerá los datos intermedios.

Los datos intermedios de Mapper se almacenan en disk. Y la transferencia de datos de Mapper a Reduce sucede a través de la red (Data Locality no se conserva en la fase Reducir)


-1
2018-04-20 08:30