Me gustaría saber la relación entre el mapreduce.map.memory.mb y mapred.map.child.java.opts parámetros.

Es mapreduce.map.memory.mb > mapred.map.child.java.opts?

Gracias,
Kewal.

InformationsquelleAutor yedapoda | 2014-06-05

2 Comentarios

  1. 65

    mapreduce.mapa.memoria.mb es la parte superior del límite de memoria que Hadoop permite ser asignados a un mapper, en megabytes. El valor predeterminado es de 512.
    Si se supera este límite, Hadoop va a matar el mapeador con un error como este:

    Contenedor[pid=container_1406552545451_0009_01_000002,containerID=container_234132_0001_01_000001]
    se ejecuta más allá de la memoria física. Uso actual: 569.1 MB de
    512 MB de memoria física utilizada; 970.1 MB de 1.0 GB de memoria virtual utilizada.
    La matanza de contenedor.

    Hadoop mapper es un proceso java y cada Java proceso tiene su propia memoria heap máximo de asignación de los ajustes configurados a través de la mapred.mapa.niño.java.opta (o mapreduce.mapa.java.opta en Hadoop 2+).
    Si el asignador de proceso que se ejecuta fuera de la memoria heap, el asignador de lanza de java fuera de la memoria excepciones:

    Error: java.lang.RuntimeException: java.lang.OutOfMemoryError

    Por lo tanto, la Hadoop y la configuración de Java están relacionados. La configuración de Hadoop es más de un recurso de ejecución/control de uno y el de Java es más de una configuración de recursos de uno.

    El almacenamiento dinámico de Java configuración debe ser menor que el de Hadoop contenedor límite de memoria porque necesitamos reservar memoria para código Java. Generalmente, se recomienda reservar el 20% de la memoria de código. Así que si los valores son correctos, Java basado en Hadoop tareas nunca debe morir por Hadoop así que usted nunca debe ver el «Asesinato de contenedor» error de arriba.

    Si usted experimenta Java errores de falta de memoria, usted tiene que aumentar tanto la configuración de la memoria.

    • Eso es lo que estoy buscando, gracias bro.
    • Otra pregunta por favor, es ‘mapreduce.mapa.memoria.mb’ exactamente la cantidad de recursos que el contenedor que ejecutar el asignador de tareas se utiliza ?
  2. 53

    Las siguientes propiedades le permite especificar las opciones para pasar a la Jvm ejecuta sus tareas. Estos pueden ser utilizados con -Xmx para el control de montón disponible.

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.child.java.opts            
    mapred.map.child.java.opts         mapreduce.map.java.opts
    mapred.reduce.child.java.opts      mapreduce.reduce.java.opts
    

    Nota no es directa Hadoop 2 equivalente para el primero de estos; el asesoramiento en el código fuente es el uso de los otros dos. mapred.child.java.opts todavía se admite (pero es reemplazado por otros dos más específicos de la configuración si está presente).

    Complementarios a estos, el siguiente que le permiten limitar total de la memoria (posiblemente virtual) disponible para sus tareas – incluyendo montón, pila y definiciones de clase:

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.job.map.memory.mb           mapreduce.map.memory.mb
    mapred.job.reduce.memory.mb        mapreduce.reduce.memory.mb
    

    Sugiero configuración -Xmx el 75% de la memory.mb valores.

    En un HILO de clúster, los trabajos no deben usar más memoria de la que el lado del servidor de configuración yarn.scheduler.maximum-allocation-mb o serán asesinados.

    Para comprobar los valores predeterminados y la prioridad de estas, ver JobConf y MRJobConfig en la Hadoop código fuente.

    Solución de problemas

    Recuerde que su mapred-site.xml puede proporcionar valores por defecto de estos ajustes. Esto puede ser confuso – por ejemplo, si su trabajo conjuntos mapred.child.java.opts mediante programación, esto no tendría ningún efecto si mapred-site.xml conjuntos de mapreduce.map.java.opts o mapreduce.reduce.java.opts. Tendrá que configurar las propiedades en su lugar de trabajo, para reemplazar el mapred-site.xml. Revise su trabajo de configuración de la página (de búsqueda para ‘xmx’) para ver qué valores se han aplicado y donde vengan.

    ApplicationMaster memoria

    En un HILO de clúster, puede utilizar las siguientes dos propiedades para controlar la cantidad de memoria disponible para su ApplicationMaster (para los detalles de la entrada se divide, el estado de las tareas, etc):

    Hadoop 0.x, 1.x                    Hadoop 2.x
    -------------------------------    --------------------------
                                       yarn.app.mapreduce.am.command-opts
                                       yarn.app.mapreduce.am.resource.mb
    

    De nuevo, se podría establecer -Xmx (en el primero) el 75% de la resource.mb valor.

    Otras configuraciones

    Hay muchas otras configuraciones relativas a los límites de la memoria, algunos de ellos en desuso – ver el JobConf clase. Una de las más útiles:

    Hadoop 0.x, 1.x (deprecated)       Hadoop 2.x
    -------------------------------    --------------------------
    mapred.job.reduce.total.mem.bytes  mapreduce.reduce.memory.totalbytes
    

    Establece a un valor bajo (10) a la fuerza shuffle a suceder en el disco, en el caso de que usted golpea una OutOfMemoryError en MapOutputCopier.shuffleInMemory.

    • Otra pregunta por favor, es ‘mapreduce.mapa.memoria.mb’ exactamente la cantidad de recursos que el contenedor que ejecutar el asignador de tareas se utiliza ?

Dejar respuesta

Please enter your comment!
Please enter your name here