Ajuste el número de mapa de tareas y reducir las tareas de

Actualmente estoy ejecutando un trabajo fijo el número de mapa de tareas a 20 mas y llegar a un mayor número. También he puesto la tarea de reducir a cero, pero yo todavía estoy recibiendo un número distinto de cero. El tiempo total para el trabajo MapReduce para completar también es no mostrar. Alguien puede decirme qué estoy haciendo mal.
Estoy usando este comando

hadoop jar Test_Parallel_for.jar Test_Parallel_for Matrix/test4.txt Result 3 \ -D mapred.map.tasks = 20 \ -D mapred.reduce.tasks =0

De salida:

11/07/30 19:48:56 INFO mapred.JobClient: Job complete: job_201107291018_0164
11/07/30 19:48:56 INFO mapred.JobClient: Counters: 18
11/07/30 19:48:56 INFO mapred.JobClient:   Job Counters 
11/07/30 19:48:56 INFO mapred.JobClient:     Launched reduce tasks=13
11/07/30 19:48:56 INFO mapred.JobClient:     Rack-local map tasks=12
11/07/30 19:48:56 INFO mapred.JobClient:     Launched map tasks=24
11/07/30 19:48:56 INFO mapred.JobClient:     Data-local map tasks=12
11/07/30 19:48:56 INFO mapred.JobClient:   FileSystemCounters
11/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_READ=4020792636
11/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_READ=1556534680
11/07/30 19:48:56 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=6026699058
11/07/30 19:48:56 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=1928893942
11/07/30 19:48:56 INFO mapred.JobClient:   Map-Reduce Framework
11/07/30 19:48:56 INFO mapred.JobClient:     Reduce input groups=40000000
11/07/30 19:48:56 INFO mapred.JobClient:     Combine output records=0
11/07/30 19:48:56 INFO mapred.JobClient:     Map input records=40000000
11/07/30 19:48:56 INFO mapred.JobClient:     Reduce shuffle bytes=1974162269
11/07/30 19:48:56 INFO mapred.JobClient:     Reduce output records=40000000
11/07/30 19:48:56 INFO mapred.JobClient:     Spilled Records=120000000
11/07/30 19:48:56 INFO mapred.JobClient:     Map output bytes=1928893942
11/07/30 19:48:56 INFO mapred.JobClient:     Combine input records=0
11/07/30 19:48:56 INFO mapred.JobClient:     Map output records=40000000
11/07/30 19:48:56 INFO mapred.JobClient:     Reduce input records=40000000
[hcrc1425n30]s0907855: 
  • Son también la configuración de mapred.mapa.tareas de configuración xml y/o el principal de la clase que se está ejecutando? Si es así, ¿el cambio de los ajustes de cambiar el número de tareas que se realicen? Parece que usted está haciendo esto correctamente, puesto que las propiedades especificadas en la línea de comandos debe tener la prioridad más alta.
  • Se debe trabajar, pero estoy recibiendo más de mapa de tareas que el especificado. Y ¿por qué es que no estoy recibiendo el total de tiempo necesario para ejecutar el trabajo?
  • No estoy seguro acerca de la hora no se imprimen, pero una posible fuente de error para el número de tareas es el espacio en su -D propiedades. Asegúrese de que usted es la ortografía es -Dproperty=value (sin espacios) o -Dproperty value (con un espacio) o bien puede ser interpretado mal.
  • El número de mapa de tareas es de acuerdo al tamaño total de la entrada y el tamaño de bloque, es decir, el número de las divisiones. aunque establecer el número de mapa de tareas, que es sólo una sugerencia. El número de reducir la tarea puede ser definido por el usuario, y si no se define explícitamente, el valor predeterminado de reducir el número es 1. más información: search-hadoop.com/c/MapReduce:hadoop-mapreduce-client/…
InformationsquelleAutor asembereng | 2011-07-30

15 Kommentare

  1. 58

    El número de mapa de tareas para un determinado puesto de trabajo es impulsado por el número de entrada se divide, y no por el mapred.mapa.tareas parámetro. Para cada entrada de dividir un mapa tarea es generado. Así, durante la vida útil de un trabajo mapreduce el número de mapa de tareas es igual al número de entrada se divide. mapred.mapa.tareas es sólo una sugerencia para que el InputFormat para el número de mapas.

    En su ejemplo de Hadoop se ha determinado que no son de 24 de entrada se divide y se reproducen 24 mapa de tareas en total. Pero, usted puede controlar el número de mapa de tareas que pueden ser ejecutadas en paralelo por cada una de las tareas tracker.

    También, la eliminación de un espacio después de la -D podría resolver el problema de reducir.

    Para obtener más información sobre el número de map y reduce las tareas, por favor consulte el siguiente url

    https://cwiki.apache.org/confluence/display/HADOOP2/HowManyMapsAndReduces

    • Hay un nodo maestro y 10 nodos esclavos en mi Hadoop/HILADOS de clúster. 5 inputsplits se crean para la secuencia de entrada de archivo. Sólo hay una tarea mapreduce que aparecían en uno slavenode en el HILO y no en cinco nodos. Cualquier ayuda cómo spwan en 5 o más ndoes?
  2. 20

    Como Praveen menciona anteriormente, cuando con el FileInputFormat clases es sólo el número de divisiones que constituyen los datos. El número de reductores de es controlado por mapred.reduce.tasks especificado en el camino, usted tiene que: -D mapred.reduce.tasks=10 especificar 10 reductores. Tenga en cuenta que el espacio después de -D es necesario; si se omite el espacio, la configuración de la propiedad, se pasa junto a la correspondiente JVM, no Hadoop.

    Se define 0 porque no hay ninguna reducir el trabajo? En ese caso, si usted está teniendo problemas con el parámetro de tiempo de ejecución, también puede establecer el valor directamente en el código. Dado un JobConf instancia job, llamada

    job.setNumReduceTasks(0);
    

    dentro de, digamos, la implementación de Tool.run. Que debe producir la salida directa de los miembros de la comunidad. Si su trabajo en realidad no produce ningún resultado en absoluto (porque estás usando el framework sólo para efectos secundarios, como la red de llamadas o de procesamiento de la imagen, o si los resultados son completamente explicada en los valores de Contador), puede deshabilitar la salida también llamada

    job.setOutputFormat(NullOutputFormat.class);
    
  3. 9

    Es importante tener en cuenta que el marco de MapReduce en Hadoop permite sólo a

    sugieren el número de Mapa de tareas para un trabajo

    que como Praveen se ha señalado anteriormente se corresponden con el número de entrada se divide para la tarea. A diferencia del comportamiento de la serie de reductores (que está directamente relacionada con el número de archivos de salida por el trabajo MapReduce), donde podemos

    demanda que proporcione a n reductores.

    • con que comando ¿de la demanda n de los reductores? también puede mostrar un pequeño ejemplo, si es posible? necesito tener el pequeño tamaño de los archivos de salida (solo unos pocos mb)
  4. 8

    A explicar con un ejemplo:

    Asumir su hadoop tamaño del archivo de entrada es de 2 GB y establezca el tamaño de bloque de 64 MB para 32 Mappers de establecer tareas a ejecutar, mientras que cada asignador de proceso de 64 MB de bloque para completar el Asignador de Trabajo de su tarea de Hadoop.

    ==> Número de miembros de la comunidad configurado para ejecutarse son completamente dependientes 1) el Tamaño del Archivo y 2) el Tamaño de Bloque

    Asumir que ha de ejecutar hadoop en un tamaño de clúster de 4:
    Suponga que usted establezca mapred.mapa.tareas y mapred.reducir.las tareas de parámetros en el fichero de configuración a los nodos de la siguiente manera:

    Node 1: mapred.map.tasks = 4 and mapred.reduce.tasks = 4
    Node 2: mapred.map.tasks = 2 and mapred.reduce.tasks = 2
    Node 3: mapred.map.tasks = 4 and mapred.reduce.tasks = 4
    Node 4: mapred.map.tasks = 1 and mapred.reduce.tasks = 1
    

    Asumir que estos parámetros para 4 de los nodos en el cluster. Si usted nota que el Nodo 2 se ha fijado sólo 2 y 2, respectivamente, debido a que los recursos de procesamiento del Nodo 2 podría ser menos e.g(2 Procesadores de 2 Núcleos) y el Nodo 4 es incluso inferior a sólo 1 y 1, respectivamente, podría ser debido a la transformación de los recursos en ese nodo es 1 procesador de 2 núcleos, así que no puede ejecutar más de 1 mapper y 1 reductor de la tarea.

    Así que cuando se ejecuta el trabajo del Nodo 1, Nodo 2 Nodo 3 Nodo 4 están configurados para ejecutar un máx. total de (4+2+4+1)11 asignador de tareas simultáneamente, de 42 asignador de tareas que debe ser completado por el Trabajo. Después de cada Nodo completa su mapa de tareas que va a tomar el resto de asignador de tareas de la izquierda en 42 asignador de tareas.

    Ahora llegando a los reductores, como se establece mapred.reducir.tareas = 0, por lo que solo tenemos asignador de salida en 42 archivos(1 archivo por cada asignador de tareas) y no reductor de salida.

    • Número de miembros de la comunidad configurado para ejecutarse son completamente dependientes de 1) File Size and 2) Block Size, creo que debe ser 1) File Size and 2) Split Size, y el número de miembros de la comunidad es igual al número de divisiones. Aquí hay una referencia: stackoverflow.com/questions/30549261/…
  5. 3

    En la más reciente versión de Hadoop, hay mucho más granular mapreduce.job.running.map.limit y mapreduce.job.running.reduce.limit que permite establecer el mapper y el reductor de contar con independencia de hdfs archivo de tamaño de división. Esto es útil si usted está bajo la restricción de no tomar grandes recursos del clúster.

    JIRA

    • Mi downvote fue un error – yo en realidad quería upvote!
    • Los parámetros de control sólo «la máxima simultánea de las tareas en ejecución», no el número total de miembros de la comunidad/reductores. No estoy seguro de cómo estos parámetros son útiles? Prefiero dejar hilados de control de concurrencia a través de clúster. Más importante es el número total de miembros de la comunidad/reductores. No estoy seguro si es relevante para la cuestión aboove. Gracias.
  6. 1

    De su registro entendí que tiene 12 archivos de entrada, ya que hay 12 locales mapas generados. Rack Local de mapas se generan para el mismo archivo, si algunos de los bloques de ese archivo en algún otro nodo de datos. Cómo muchos de los datos de los nodos tiene?

  7. 1

    En tu ejemplo, la -D partes no son recogidos:

    hadoop jar Test_Parallel_for.jar Test_Parallel_for Matrix/test4.txt Result 3 \ -D mapred.map.tasks = 20 \ -D mapred.reduce.tasks =0
    

    Que debe venir después de la clase como parte de este:

    hadoop jar Test_Parallel_for.jar Test_Parallel_for -Dmapred.map.tasks=20 -Dmapred.reduce.tasks=0 Matrix/test4.txt Result 3
    

    Un espacio después de -D está permitido, aunque.

    También tenga en cuenta que cambiar el número de miembros de la comunidad es probablemente una mala idea, como otras personas han mencionado aquí.

  8. 1

    Número de mapa de tareas es directamente se define por el número de fragmentos de su entrada está dividida. El tamaño de bloque de datos (es decir, HDFS tamaño de bloque) es controlable y se puede configurar para un archivo individual, conjunto de archivos, directorio(-s). Así, la fijación de número de mapa de tareas en un puesto de trabajo es posible, pero implica la configuración de un correspondiente HDFS tamaño de bloque de trabajo de entrada de datos. mapred.mapa.tareas puede ser utilizado para que también, pero sólo si su valor proporcionado es mayor que el número de divisiones de trabajo de entrada de datos.

    Controlar el número de reductores a través de mapred.reducir.tareas es correcta. Sin embargo, el ajuste a cero, es más bien un caso especial: el trabajo de la salida es una concatenación de cartógrafos salidas (no ordenadas). En Matt respuesta uno puede ver más maneras para establecer el número de reductores.

  9. 0

    Una forma en que usted puede aumentar el número de miembros de la comunidad es para dar a su entrada en la forma de división de archivos [puede utilizar linux comando dividir]. Hadoop streaming normalmente asigna a que muchos miembros de la comunidad, ya que hay archivos de entrada[si hay un gran número de archivos] si no se va a tratar de dividir la información en partes de igual tamaño.

  10. 0
    • Uso -propiedad D=valor en lugar de -propiedad D = valor (eliminar
      extra de espacios en blanco). Por lo tanto-D mapred.reducir.tareas=valor del trabajo
      bien.

    • El número de ajuste de mapa de tareas no siempre refleja el valor que tiene
      conjunto, ya que depende del tamaño de división y InputFormat utilizado.

    • Establecer el número de reduce definitivamente anular el número de
      reduce en clúster/configuración del lado cliente.

  11. 0

    Estoy de acuerdo en el número de mapp tarea depende de la entrada de división, pero en algunos de los escenario podía ver su poco diferente

    caso-1 he creado un simple mapp tarea sólo crea 2 duplicado de la salida de poner el archivo (datos de ia misma)
    comando me dio por debajo de

    bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -D mapred.reducir.tareas=0 -entrada /home/muestra.csv -salida /home/sample_csv112.txt -mapper /home/amitav/workpython/readcsv.py

    Caso-2 Así que me restrcted la mapp tarea 1 la salida de colocar el vino correctamente con un archivo de salida, pero un reductor también almorzó en la interfaz de usuario de pantalla aunque restringido el reductor de velocidad de trabajo. El comando es la siguiente.

    bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -D mapred.mapa.tareas=1 mapred.reducir.tareas=0 -entrada /home/muestra.csv -salida /home/sample_csv115.txt -mapper /home/amitav/workpython/readcsv.py

  12. 0

    La primera parte ya ha sido contestada, «sólo una sugerencia»
    La segunda parte también ha sido contestada, «eliminar el exceso de espacios alrededor de =»
    Si estos dos no funciona, está seguro de que se han implementado ToolRunner ?

  13. 0

    Número de mapa de tareas depende del tamaño del Archivo, Si desea que el número n de Mapa, dividir el tamaño del archivo por el n de la siguiente manera:

    conf.set("mapred.max.split.size", "41943040"); //maximum split file size in bytes
    conf.set("mapred.min.split.size", "20971520"); //minimum split file size in bytes
    
  14. -2

    La gente de esta teoría parece que no podemos ejecutar mapa de reducir puestos de trabajo en paralelo.

    Digamos que he configurado total de 5 asignador de los trabajos a ejecutar en el nodo en particular.También quiero usar esto de tal manera que JOB1 puede utilizar 3 mappers y JOB2 puede utilizar 2 miembros de la comunidad, de modo que el trabajo se puede ejecutar en paralelo. Pero por encima de propiedades se omiten entonces, ¿cómo pueden ejecutar trabajos en paralelo.

  15. -2

    De lo que yo entiendo de la lectura anterior, depende de los archivos de entrada. Si los Archivos de Entrada son 100 medios de Hadoop creará 100 mapa de tareas.
    Sin embargo, depende de la configuración del Nodo de Cómo Muchos se pueden ejecutar en un momento de tiempo.
    Si un nodo está configurado para correr 10 mapa de tareas – a sólo 10 mapa de tareas se ejecutarán en paralelo mediante la selección de 10 diferentes tipos de archivos de entrada de 100 disponibles.
    Mapa de tareas va a continuar para obtener más archivos como y cuando se complete el procesamiento de un archivo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea