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
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.
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.
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
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 /
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
Les autorisations doivent être 6050 propriétaire: groupe racine hadoop
--- Sr-s --- 1 racine hadoop/usr/lib/hadoop-yarn/bin/conteneur-exécuteur
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.
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
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.
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