2011-11-06 12 views

Respuesta

14

-Xmx especifique el espacio de almacenamiento dinámico máximo de la jvm asignada. Este es el espacio reservado para la asignación de objetos que administra el garbage collector. Por otro lado, mapred.job.map.memory.mb especifica el máximo virtual memory permitido por un subproceso de tarea de Hadoop. Si supera el tamaño máximo de almacenamiento dinámico, la JVM arroja una OutOfMemoryException.

La JVM puede usar más memoria que el tamaño máximo de almacenamiento dinámico porque también necesita espacio para almacenar definiciones de objetos (espacio permgen) y la pila. Si el proceso usa más memoria virtual que mapred.job.map.memory.mb es destruido por hadoop.

Así que uno no toma precedencia sobre la otra (y miden diferentes aspectos del uso de la memoria), pero -Xmx es un parámetro para la JVM y mapred.job.map.memory.mb es un disco superior unido de la memoria virtual de un intento tarea puede utilizar , impuesto por hadoop.

Espero que esto sea útil, ¡la memoria es complicada! Actualmente estoy confundido por el motivo por el cual mis procesos JVM usan varios múltiplos del tamaño máximo de almacenamiento dinámico en la memoria virtual en my SO post.

+0

Hola. ¿Cómo afecta esto a las tareas de mapeador/reductor personalizado no java? ¿Hay alguna manera de restringir la asignación de memoria para los scripts de mapper/reducer personalizados también? –

Cuestiones relacionadas