it-swarm.com.de

Problem mit Yarn MapReduce-Job - Fehler beim Starten des Containers in Hadoop 2.3.0

Ich habe einen 2-Knoten-Cluster von Hadoop 2.3.0 eingerichtet. Es funktioniert einwandfrei und ich kann das Beispiel von Distributedshell-2.2.0.jar erfolgreich ausführen. Aber wenn ich versuche, einen Mapreduce-Job auszuführen, erhalte ich einen Fehler. Ich habe MapRed.xml und andere Konfigurationen für das Ausführen von MapReduce gemäß ( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide ) eingerichtet, aber ich bekomme folgender Fehler:

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.

Und wenn Sie sich stderr (Jobprotokoll) anschauen, gibt es nur eine Zeile "Could not find or load main class 614"

Jetzt habe ich es gegoogelt und normalerweise tritt dieses Problem auf, wenn Sie verschiedene Java-Versionen haben oder in yarn-site.xml classpath nicht richtig festgelegt ist. Mein yarn-site.xml hat dies

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

Also irgendwelche anderen Ideen, was könnte das Problem sein? 

Ich führe meinen mapreduce-Job so aus:

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

Beim Versuch, Hortonworks HDP 2.1 manuell zu installieren, ist dasselbe Problem aufgetreten. Es gelang mir, das Container-Starter-Skript zu erfassen, das Folgendes enthielt:

#!/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 "

Die Linie, die CLASSPATH setzt, war der Schuldige. Um das Problem zu lösen, musste ich die Variablen HADOOP_COMMON_HOME, HADOOP_HDFS_HOME, HADOOP_YARN_HOME und HADOOP_MAPRED_HOME in hadoop-env.sh so einstellen, dass sie auf die entsprechenden Verzeichnisse unter /usr/lib zeigen. In jedem dieser Verzeichnisse musste ich auch die share/hadoop/...-Unterverzeichnishierarchie einrichten, in der die Jars gefunden werden konnten.

6
Doug Judd

Ich habe diese Frage mit folgendem gelöst:

Weil in meinem hadoop/etc/hadoop [hadoop-2.7.3 Konfigurationskatalog]: Über 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>

In dieser Datei. Der 'zhangjunj' muss der Name Ihres Masters sein, aber ich hatte am Anfang 'hadoop' geschrieben.

1
俊杰张

Ich habe das Problem behoben, es lag an falschen Pfaden. Durch die Angabe des vollständigen Verzeichnispfads zu mapred, hdfs, garne & common wird das Problem gelöst.

Danke, Tony

0
TonyMull

Bitte überprüfen Sie die Eigenschaft. Stellen Sie sicher, dass alle erforderlichen Gläser vorhanden sind.

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

0
akshat thakar

Ich habe dieses Problem auch auf Ambari 2.0 + HDP2.3 + HUE3.9my festgestellt. Stellen Sie sicher, dass der Spark-Client auf allen hadoop-Garnknoten vorhanden ist 2. Exportiere SPARK_HOME auf allen Garnknoten (Spark-Client) und Hue-Host

0
li long'en

Die Berechtigungen sollten 6050 Besitzer sein: Stammgruppe Hadoop 

--- Sr-s --- 1 root hadoop/usr/lib/hadoop-garne/bin/container-executor

0
Nimmagadda

Bitte überprüfen Sie zuerst die Protokolle (sie befinden sich im Benutzerverzeichnis im Protokollverzeichnis von Hadoop). 

Überprüfen Sie auch die Berechtigungen aller Verzeichnisse, die Sie in XML-Dateien für Garne, HDFS und Core-Site erwähnt haben. Weil dieser Fehler in den meisten Fällen durch falsche Berechtigungsprobleme verursacht wird. 

0
Harit Singh

Überprüfen Sie die Swap-Größe in Ihrem System: free -m Wenn Swap: 0 0 0 Swap-Speicher zugeordnet ist, folgen Sie diesen Anweisungen/ Anweisungen

0
Igorock

In meinem Fall lag das Problem an einem unzureichenden Speicher. Ich habe den folgenden Code in gar-site-xml eingefügt, wie Adino in seinem Kommentar oben vorgeschlagen hat: 

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

Danach konnte ich einen Fehler in der stderr-Protokolldatei sehen. Ich erinnere mich nicht an den genauen Wortlaut (Logdatei wurde nach einiger Zeit gelöscht). Es war in der Richtung von "out of memory error"

Ich bearbeitete meine virtuelle Maschine, um eine weitere Swap-Partition der Größe 3 Gigabyte (wahrscheinlich totaler Overkill) hinzuzufügen. Ich habe das mit Gparted gemacht. 

Danach musste ich die neue Swap-Partition durch Eingabe registrieren 

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

Ich habe die UID der neuen Swap-Partition gefunden, indem ich "blkid" eingegeben und die Uid kopiert habe. 

Ich habe den Swap in der Datei fstab registriert:

Sudo vi /etc/fstab

Ich habe eine neue Zeile für die neue Swap-Partition hinzugefügt. Ich habe die gesamte Zeile von der vorherigen Swap-Partition kopiert und gerade die UID geändert. 

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

Danach ist der Fehler verschwunden. Ich bin sicher, es gibt elegantere Wege, dies zu lösen, aber das hat für mich funktioniert. Ich bin ziemlich neu im Umgang mit Linux. 

0
Laura

Vielleicht können Sie HistoryServer mit folgendem Code unter $ HADOOP_HOME/bin ausführen.

./mr-jobhistory-daemon.sh start historyserver

Und dann können Sie Protokolle von Hadoop Error von dieser URL aus steuern, (Verlaufsprotokoll)

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

Und höchstwahrscheinlich erhalten Sie eine Klasse, die nicht gefunden wurde

0
iceberg