java - official - Problema de trabajo de Yarda MapReduce-Error de inicio de AM Container en Hadoop 2.3.0
mapreduce ibm (11)
Configuré un clúster de 2 nodos de Hadoop 2.3.0. Está funcionando bien y puedo ejecutar con éxito el ejemplo de distributedshell-2.2.0.jar. Pero cuando trato de ejecutar cualquier trabajo de mapreduce, obtengo un error. Configuré MapRed.xml y otras configuraciones para ejecutar el trabajo de MapReduce de acuerdo con ( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide ) pero recibo el siguiente error:
14/03/22 20:31:17 INFO mapreduce.Job: Job job_1395502230567_0001 failed with state FAILED due to: Application application_1395502230567_0001 failed 2 times due to AM Container for appattempt_1395502230567_0001_000002 exited
with exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Container exited with a non-zero exit code 1
.Failing this attempt.. Failing the application.
14/03/22 20:31:17 INFO mapreduce.Job: Counters: 0
Job ended: Sat Mar 22 20:31:17 PKT 2014
The job took 6 seconds.
Y si mira stderr (registro de trabajo), solo hay una línea "Could not find or load main class 614"
Ahora lo busqué en Google y generalmente este problema viene cuando tienes diferentes versiones de JAVA o en yarn-site.xml
classpath no está configurado correctamente, mi yarn-site.xml
tiene esto
<property>
<name>yarn.application.classpath</name>
<value>/opt/yarn/hadoop-2.3.0/etc/hadoop,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*</value>
</property>
¿Alguna otra idea sobre cuál podría ser el problema aquí?
Estoy ejecutando mi trabajo mapreduce de esta manera:
$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter out
También me encontré con este problema en Ambari 2.0 + HDP2.3 + HUE3.9 mi experiencia de reparación es: 1. Asegúrese de que el cliente de chispa exista en todo el nodo de hilo hadoop 2. Exporte SPARK_HOME en todos los nodos de hilado (cliente de chispa) y host de matiz
Solucioné el problema, fue debido a rutas incorrectas. Al dar una ruta de directorios completa a mapred, hdfs, hilo y común resuelve el problema.
Gracias, Tony
Me encontré con el mismo problema al intentar instalar Hortonworks HDP 2.1 manualmente. Logré capturar la secuencia de comandos del iniciador de contenedor que contenía lo siguiente:
#!/bin/bash
export NM_HTTP_PORT="8042"
export LOCAL_DIRS="/data/1/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/3/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/4/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001"
export JAVA_HOME="/usr/java/latest"
export NM_AUX_SERVICE_mapreduce_shuffle="AAA0+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
export CLASSPATH="$PWD:$HADOOP_CONF_DIR:$HADOOP_COMMON_HOME/share/hadoop/common/*:$HADOOP_COMMON_HOME/share/hadoop/common/lib/*:$HADOOP_HDFS_HOME/share/hadoop/hdfs/*:$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*:$HADOOP_YARN_HOME/share/hadoop/yarn/*:$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*:job.jar/job.jar:job.jar/classes/:job.jar/lib/*:$PWD/*"
export HADOOP_TOKEN_FILE_LOCATION="/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/container_1406927878786_0001_01_000001/container_tokens"
export NM_HOST="test02.admin.hypertable.com"
export APPLICATION_WEB_PROXY_BASE="/proxy/application_1406927878786_0001"
export JVM_PID="$$"
export USER="doug"
export HADOOP_HDFS_HOME="/usr/lib/hadoop-hdfs"
export PWD="/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/container_1406927878786_0001_01_000001"
export CONTAINER_ID="container_1406927878786_0001_01_000001"
export HOME="/home/"
export NM_PORT="62404"
export LOGNAME="doug"
export APP_SUBMIT_TIME_ENV="1406928095871"
export MAX_APP_ATTEMPTS="2"
export HADOOP_CONF_DIR="/etc/hadoop/conf"
export MALLOC_ARENA_MAX="4"
export LOG_DIRS="/data/1/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/2/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/3/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001"
ln -sf "/data/1/hadoop/yarn/local/usercache/doug/filecache/10/libthrift-0.9.2.jar" "libthrift-0.9.2.jar"
ln -sf "/data/4/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/13/job.xml" "job.xml"
mkdir -p jobSubmitDir
ln -sf "/data/3/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/12/job.split" "jobSubmitDir/job.split"
mkdir -p jobSubmitDir
ln -sf "/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/11/job.splitmetainfo" "jobSubmitDir/job.splitmetainfo"
ln -sf "/data/1/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/10/job.jar" "job.jar"
ln -sf "/data/2/hadoop/yarn/local/usercache/doug/filecache/11/hypertable-0.9.8.0-apache2.jar" "hypertable-0.9.8.0-apache2.jar"
exec /bin/bash -c "$JAVA_HOME/bin/java -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Xmx1024m org.apache.hadoop.mapreduce.v2.app.MRAppMaster 1>/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001/stdout 2>/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001/stderr "
La línea que establece CLASSPATH
fue la culpable. Para resolver el problema, tuve que establecer las variables HADOOP_COMMON_HOME
, HADOOP_HDFS_HOME
, HADOOP_YARN_HOME
y HADOOP_MAPRED_HOME
en hadoop-env.sh
para que hadoop-env.sh
a los directorios apropiados en /usr/lib
. En cada uno de esos directorios también tuve que configurar la jerarquía de subdirectorios share/hadoop/...
donde se podían encontrar los share/hadoop/...
.
Por favor revisa la propiedad. Asegúrese de que todos los frascos necesarios estén presentes.
** yarn.application.classpath ** / etc / hadoop / conf, / usr / lib / hadoop / , / usr / lib / hadoop / lib / , / usr / lib / hadoop-hdfs / , / usr / lib / hadoop-hdfs / lib / , / usr / lib / hadoop-hilo / , / usr / lib / hadoop-hilo / lib / , / usr / lib / hadoop-mapreduce / , / usr / lib / hadoop-mapreduce / lib /
Tal vez puedas ejecutar HistoryServer con el siguiente código en $ HADOOP_HOME / bin,
./mr-jobhistory-daemon.sh start historyserver
Y luego puede controlar los registros de Error de Hadoop desde esta url, (Registro de historial)
http://<Resource Manager Host name adress>:8088/cluster
Y lo más probable es que reciba una excepción de clase no encontrada
Los permisos deben ser 6050 owner: root group hadoop
--- Sr-s --- 1 raíz hadoop / usr / lib / hadoop-yarn / bin / contenedor-ejecutor
Primero verifique los registros (estarán en el directorio de usuarios en el directorio de registros de Hadoop).
También verifique los permisos de todos los directorios que mencionó en yarn, hdfs, core-site XML files. Debido a que este error es causado por problemas de permisos incorrectos en la mayoría de los casos.
Deberá retrasar la eliminación de registros configurando yarn.nodemanager.delete.debug-delay-sec
en 600.
Esto le permitirá navegar por stderr, stdout y syslog en /hadoop/yarn/log
en el directorio de contenedores correspondiente.
Lo más probable es que encuentre el error en syslog. Y, muy probablemente, será una ClassNotFoundException
para la clase tez.history.logging.service.class = org.apache.tez.dag.history.logging.ats.ATSV15HistoryLoggingService.
Si ese es el caso, consulte el siguiente ticket:
Compruebe el tamaño de intercambio en su sistema: free -m
Si hay Swap: 0 0 0
asigna la memoria Swap siguiendo estas instrucciones
En mi caso, el problema se debió a la memoria insuficiente. Inserté el siguiente en yarn-site-xml como adino sugirió en su comentario anterior:
<property> <name>yarn.nodemanager.delete.debug-delay-sec</name> <value>600</value> </property>
Después de eso pude ver un error en el archivo de registro de stderr. No recuerdo la redacción exacta (el archivo de registro se eliminó después de un tiempo). Fue a lo largo de las líneas de "error de memoria"
Edité mi máquina virtual para agregar otra partición de intercambio del tamaño de 3 gigabytes (probablemente una sobrecarga total). Hice esto con Gparted.
Después tuve que registrar la nueva partición de intercambio escribiendo
mkswap /dev/sda6 (/dev/sda6 is the partition name)
swapon /dev/sda6
Encontré el uid de la nueva partición de intercambio escribiendo "blkid" y copiando el uid.
Registré el intercambio en el archivo fstab:
sudo vi /etc/fstab
Agregué una nueva línea para la nueva partición de intercambio. Copié toda la línea de la partición de intercambio anterior y simplemente cambié el UID.
UUID=2d29cddd-e721-4a7b-95c0-7ce52734d8a3 none swap sw 0 0
Después de esto, el error desapareció. Estoy seguro de que hay formas más elegantes de resolver esto, pero esto funcionó para mí. Soy bastante nuevo para tratar con Linux.
Resolví esta pregunta con lo siguiente:
Porque en mi hadoop / etc / hadoop [catálogo de configuración de hadoop-2.7.3]: Acerca de mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>zhangjunj:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>zhangjunj:19888</value>
</property>
</configuration>
En este archivo. El ''zhangjunj'' debe ser el nombre de máquina de su amo, pero al principio había escrito ''hadoop''.