web-dev-qa-db-ja.com

糸MapReduceジョブの問題-Hadoop 2.3.0でのAMコンテナー起動エラー

Hadoop 2.3.0の2ノードクラスターをセットアップしました。正常に動作し、分散シェル-2.2.0.jarサンプルを正常に実行できます。しかし、mapreduceジョブを実行しようとすると、エラーが発生します。 ( http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide )に従ってMapReduceジョブを実行するためのMapRed.xmlおよびその他の構成をセットアップしましたが、私は次のエラーが発生しています:

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.

そして、stderr(ジョブのログ)を見ると、1行しかありません"Could not find or load main class 614"

今、私はそれをグーグルで調べましたが、通常、この問題は異なるJavaバージョンまたはyarn-site.xmlクラスパスが正しく設定されていない、私のyarn-site.xmlこれがある

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

ここで問題になる可能性のある他のアイデアはありますか?

Mapreduceジョブを次のように実行しています。

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

Hortonworks HDP 2.1を手動でインストールしようとすると、同じ問題が発生しました。次の内容を含むコンテナランチャースクリプトをキャプチャできました。

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

CLASSPATHを設定する行が原因でした。この問題を解決するには、HADOOP_COMMON_HOMEの変数HADOOP_HDFS_HOMEHADOOP_YARN_HOMEHADOOP_MAPRED_HOME、およびhadoop-env.shを、/usr/libの下の適切なディレクトリを指すように設定する必要がありました。これらの各ディレクトリで、jarファイルが見つかるshare/hadoop/...サブディレクトリ階層を設定する必要もありました。

7
Doug Judd

この質問を次の方法で解決しました。

私のhadoop/etc/hadoop [hadoop-2.7.3構成カタログ]: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>

このファイル内。 「zhangjunj」はマスターのマシン名でなければなりませんが、最初は「hadoop」と書きました。

1
俊杰张

問題を修正しましたが、これはパスが正しくなかったためです。 mapred、hdfs、yarn&commonに完全なdirパスを与えることで、問題が解決します。

ありがとう、トニー

0
TonyMull

プロパティを確認してください。必要なすべてのjarが存在することを確認してください。

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

また、Ambari 2.0 + HDP2.3 + HUE3.9でこの問題が発生しました。修正の手順は次のとおりです。1.すべてのhadoop yarnノードにsparkクライアントが存在することを確認します)、および色相ホスト

0
li long'en

許可は6050である必要がありますowner:root group hadoop

--- Sr-s --- 1つのルートhadoop/usr/lib/hadoop-yarn/bin/container-executor

0
Nimmagadda

最初にログを確認してください(Hadoopのlogsディレクトリの下のユーザーディレクトリにあります)。

また、yarn、hdfs、core-site XMLファイルで言及したすべてのディレクトリの権限を確認してください。このエラーは、ほとんどの場合、誤った権限の問題が原因で発生するためです。

0
Harit Singh

システムのスワップサイズを確認します:free -m もしあれば Swap: 0 0 0これらの後にスワップメモリ​​を割り当てます 命令

0
Igorock

私の場合、問題はメモリ不足が原因でした。 adinoが上記のコメントで示唆したように、以下をyarn-site-xmlに挿入しました。

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

その後、stderrログファイルにエラーが表示されました。正確な言葉遣いを覚えていません(しばらくしてログファイルが削除されました)。 「メモリ不足エラー」の行に沿っていた

仮想マシンを編集して、サイズが3ギガバイトの別のスワップパーティションを追加しました(おそらく完全に過剰)。 Gpartedでこれを行いました。

その後、次のように入力して新しいスワップパーティションを登録する必要がありました。

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

「blkid」と入力し、uidをコピーして、新しいスワップパーティションのuidを見つけました。

スワップをファイルfstabに登録しました。

Sudo vi /etc/fstab

新しいスワップパーティションに新しい行を追加しました。前のスワップパーティションから行全体をコピーし、UIDを変更しました。

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

この後、エラーは消えました。これを解決するためのよりエレガントな方法があると確信していますが、これはうまくいきました。 Linuxを扱うのは初めてです。

0
Laura

たぶん、$ HADOOP_HOME/binの下の次のコードでHistoryServerを実行できます。

./mr-jobhistory-daemon.sh start historyserver

そして、このURLからHadoopエラーのログを制御できます(履歴ログ)

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

そして、おそらくあなたはクラスが見つかりません例外を取得します

0
iceberg