web-dev-qa-db-fra.com

Problème de tâche Yarn MapReduce - Erreur de lancement du conteneur AM dans Hadoop 2.3.0

J'ai configuré un cluster à 2 nœuds de Hadoop 2.3.0. Cela fonctionne bien et je peux exécuter avec succès exemple distribué-2.2.0.jar. Mais lorsque j'essaie d'exécuter n'importe quel travail mapreduce, une erreur se produit. J'ai configuré MapRed.xml et d'autres configurations pour exécuter le travail MapReduce conformément à ( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide ), mais je reçois erreur suivante:

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.

Et si vous regardez stderr (journal du travail), il n'y a qu'une seule ligne "Could not find or load main class 614"

Maintenant, je l'ai googlé et généralement ce problème survient lorsque vous avez différentes versions de Java ou que yarn-site.xml classpath n'est pas correctement défini, mon yarn-site.xml possède ceci

  <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>

Alors d'autres idées, quel pourrait être le problème ici? 

Je dirige mon travail mapreduce comme ceci:

$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter out
19
TonyMull

J'ai rencontré le même problème lorsque j'essayais d'installer Hortonworks HDP 2.1 manuellement. J'ai réussi à capturer le script de lancement de conteneur qui contenait les éléments suivants:

#!/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 ligne qui définit CLASSPATH était le coupable. Pour résoudre le problème, je devais définir les variables HADOOP_COMMON_HOME, HADOOP_HDFS_HOME, HADOOP_YARN_HOME et HADOOP_MAPRED_HOME dans hadoop-env.sh afin de pointer vers les répertoires appropriés sous /usr/lib. Dans chacun de ces répertoires, je devais également configurer la hiérarchie de sous-répertoires share/hadoop/... où les fichiers jar pouvaient être trouvés.

6
Doug Judd

J'ai résolu cette question avec les éléments suivants:

Parce que dans mon hadoop/etc/hadoop [catalogue de configuration hadoop-2.7.3]: À propos 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>

Dans ce dossier. Le "zhangjunj" doit être le nom de machine de votre maître, mais j'avais écrit "hadoop" au début.

1
俊杰张

J'ai résolu le problème, il était dû à des chemins incorrects. En donnant le chemin d'accès complet à mapred, hdfs, yarn & common, résout le problème.

Merci, Tony

0
TonyMull

S'il vous plaît vérifier la propriété . Assurez-vous que tous les bocaux requis sont présents.

** 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-yarn/,/usr/lib/hadoop-yarn/lib/,/usr/lib/hadoop-mapreduce/,/usr/lib/hadoop-mapreduce/lib /

0
akshat thakar

J'ai également rencontré ce problème sur Ambari 2.0 + HDP2.3 + HUE3.9my résoudre le problème est la suivante: 1. assurez-vous que le client d'allumage existe sur tous les nœuds de fil hadoop 2. exporter SPARK_HOME sur tous les nœuds de fil (client spark) et hue Host

0
li long'en

Les autorisations doivent être 6050 propriétaire: groupe racine hadoop 

--- Sr-s --- 1 racine hadoop/usr/lib/hadoop-yarn/bin/conteneur-exécuteur

0
Nimmagadda

Veuillez vérifier d'abord les journaux (ils seront dans le répertoire de l'utilisateur sous le répertoire des journaux de Hadoop). 

Vérifiez également les autorisations de tous les répertoires mentionnés dans les fichiers XML yarn, hdfs et core-site. Parce que cette erreur est causée par des problèmes d'autorisation erronés dans la plupart des cas. 

0
Harit Singh

Vérifiez la taille de l’échange dans votre système: free -m S'il y a Swap: 0 0 0, allouez la mémoire d’échange à la suite de ces instructions

0
Igorock

Dans mon cas, le problème était dû à une mémoire insuffisante. J'ai inséré le texte ci-dessous dans yarn-site-xml comme suggéré dans le commentaire ci-dessus: 

<property> <name>yarn.nodemanager.delete.debug-delay-sec</name> <value>600</value> </property>

Après cela, une erreur s'est produite dans le fichier journal stderr. Je ne me souviens pas de la formulation exacte (le fichier journal a été supprimé au bout d'un moment). C'était dans le sens de "erreur de mémoire insuffisante"

J'ai édité ma machine virtuelle pour ajouter une autre partition de swap de la taille 3 gigaoctets (probablement la surpuissance totale). Je l'ai fait avec Gparted. 

Ensuite, j'ai dû enregistrer la nouvelle partition de swap en tapant 

mkswap /dev/sda6 (/dev/sda6 is the partition name)
swapon /dev/sda6 

J'ai trouvé l'identifiant de la nouvelle partition de swap en tapant "blkid" et en copiant l'identifiant. 

J'ai enregistré l'échange dans le fichier fstab:

Sudo vi /etc/fstab

J'ai ajouté une nouvelle ligne pour la nouvelle partition de swap. J'ai copié la ligne entière de la partition de swap précédente et viens de changer l'UID. 

UUID=2d29cddd-e721-4a7b-95c0-7ce52734d8a3 none  swap    sw      0       0

Après cela, l'erreur a disparu. Je suis sûr qu'il existe des moyens plus élégants de résoudre ce problème, mais cela a fonctionné pour moi. Je suis assez nouveau pour traiter avec Linux. 

0
Laura

Peut-être que vous pouvez exécuter HistoryServer avec le code suivant sous $ HADOOP_HOME/bin,

./mr-jobhistory-daemon.sh start historyserver

Et puis vous pouvez contrôler les journaux de Hadoop Error à partir de cette URL, (Historique)

http://<Resource Manager Host name adress>:8088/cluster

Et très probablement, vous obtenez une exception de classe non trouvée

0
iceberg