[Java] Problema de trabajo de Yarda MapReduce - Error de inicio de AM Container en Hadoop 2.3.0


Answers

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

Question

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



Los permisos deben ser 6050 owner: root group hadoop

--- Sr-s --- 1 raíz hadoop / usr / lib / hadoop-yarn / bin / contenedor-ejecutor




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:

https://issues.apache.org/jira/browse/AMBARI-15041




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




Compruebe el tamaño de intercambio en su sistema: free -m Si hay Swap: 0 0 0 asigna la memoria Swap siguiendo estas instrucciones