tutorial spark hadoop

hadoop - spark - Error: espacio de almacenamiento dinámico de Java



hadoop wikipedia (4)

Al usar Hadoop 2.5.0-cdh5.2.0, esto me ayudó a cambiar el tamaño del montón del proceso java local (secuencial):

export HADOOP_HEAPSIZE=2900 hadoop jar analytics.jar .....

La razón por la que funcionó es que /usr/lib/hadoop/libexec/hadoop-config.sh tiene

# check envvars which might override default args if [ "$HADOOP_HEAPSIZE" != "" ]; then #echo "run with heapsize $HADOOP_HEAPSIZE" JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m" #echo $JAVA_HEAP_MAX fi

En Ubuntu, cuando estoy ejecutando el ejemplo de hadoop:

$bin/hadoop jar hadoop-examples-1.0.4.jar grep input output ''dfs[a-z.]+'' $echo $HADOOP_HEAPSIZE 2000

En el registro, estoy recibiendo el error como:

Maped.JobClient INFO: Id. De la tarea: intento_201303251213_0012_m_000000_2, Estado: Error: Espacio de almacenamiento en Java 13/03/25 15:03:43 Mapred.JobClient INFO: Estado de la inspección de la información: Parche de la inspección de la información: event_201303251213_0012_m_000001_2. 15:04:28 INFO mapred.JobClient: trabajo fallido: # de tareas de mapa fallidas excedió el límite permitido. FailedCount: 1. LastFailedTask: task_201303251213_0012_m_000000 java.io.IOException: ¡Error en la tarea! en org.apache.hadoop.mapred.JobClient.runJob (JobClient.java:1265) en org.apache.hadoop.examples.Grep.run (Grep.java:69) en org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:65) en org.apache.hadoop.examples.Grep.main (Grep.java:93)

Háganos saber cuál es el problema.


Claramente se ha quedado sin el tamaño de pila asignado a Java. Así que tratarás de aumentar eso.

Para eso puedes ejecutar lo siguiente antes de ejecutar el comando hadoop :

export HADOOP_OPTS="-Xmx4096m"

Alternativamente, puede lograr lo mismo agregando la siguiente configuración permanente en su archivo mapred-site.xml , este archivo se encuentra en HADOOP_HOME/conf/ :

<property> <name>mapred.child.java.opts</name> <value>-Xmx4096m</value> </property>

Esto establecería su espacio de almacenamiento dinámico en java a 4096 MB (4 GB), incluso puede intentarlo con un valor más bajo primero si eso funciona. Si eso tampoco funciona, auméntelo más si su máquina lo admite, si no, muévase a una máquina que tenga más memoria y pruebe allí. Como el espacio del montón simplemente significa que no tiene suficiente RAM disponible para Java.

ACTUALIZACIÓN: para Hadoop 2+, realice los cambios en mapreduce.map.java.opts en su lugar.


Si agrega una propiedad en mapred-site.xml

<property> <name>mapred.child.java.opts</name> <value>-Xmx2048m</value> </property>

A veces sucede otro porque es más que un límite de memoria virtual. En esta situación, debe agregar

<property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>4.2</value> </property>

en yarn-site.xml

porque su predeterminado 2.1G a veces es demasiado pequeño.


<property> <name>mapred.child.java.opts</name> <value>-Xmx4096m</value> </property>

Funciona para mi.

exportar HADOOP_OPTS = "- Xmx4096m"

no funciona