2015-12-25 5 views
12

MapReduceジョブとして単純な単語カウントを実行しようとしました。ローカルで実行するとすべて正常に動作します(すべての作業は名前ノードで行われます)。しかし、YARN(mapreduce.framework.name = yarnをmapred-site.confに追加)を使用してクラスタ上で実行しようとすると、ジョブがハングします。仕事から MapReduce jobs get stuck in Accepted stateMapReduceジョブがハングし、AMコンテナが割り当てられるのを待っています

出力:

*** START *** 
15/12/25 17:52:50 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 
15/12/25 17:52:51 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 
15/12/25 17:52:51 INFO input.FileInputFormat: Total input paths to process : 5 
15/12/25 17:52:52 INFO mapreduce.JobSubmitter: number of splits:5 
15/12/25 17:52:52 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1451083949804_0001 
15/12/25 17:52:53 INFO impl.YarnClientImpl: Submitted application application_1451083949804_0001 
15/12/25 17:52:53 INFO mapreduce.Job: The url to track the job: http://hadoop-droplet:8088/proxy/application_1451083949804_0001/ 
15/12/25 17:52:53 INFO mapreduce.Job: Running job: job_1451083949804_0001 

mapred-site.xmlを:

糸-site.xmlの

は、私はここで、同様の問題に出くわしました

<configuration> 
<property> 
    <name>yarn.nodemanager.aux-services</name> 
    <value>mapreduce_shuffle</value> 
</property> 
<property> 
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
</property> 

<!-- 
<property> 
<name>yarn.nodemanager.resource.memory-mb</name> 
<value>3000</value> 
<source>yarn-site.xml</source> 
</property> 

<property> 
    <name>yarn.scheduler.minimum-allocation-mb</name> 
    <value>500</value> 
</property> 

<property> 
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name> 
<value>3000</value> 
</property> 
--> 

</configuration> 

// I左のコメントオプション - 彼らは問題に

YarnApplicationStateを解決しませんでした:ACCEPTED:、割り当てられた打ち上げとRMに登録されるようにAMコンテナを待っています。

YarnApplicationState: ACCEPTED: waiting for AM container to be allocated, launched and register with RM.

何が問題になることができますか?

EDIT:名前ノード(8ギガバイトRAM)+ 2xのデータノード(最大4GB RAM):

私はマシン上でこの設定(コメント)を試してみました。私は同じ効果を得ます:ジョブは受諾状態でハングします。

EDIT2: 変更された構成(おかげ@Manjunath Ballur)へ:

糸のsite.xml:

<configuration> 
    <property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>hadoop-droplet</value> 
    </property> 

    <property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>hadoop-droplet:8031</value> 
    </property> 
    <property> 
    <name>yarn.resourcemanager.address</name> 
    <value>hadoop-droplet:8032</value> 
    </property> 
    <property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>hadoop-droplet:8030</value> 
    </property> 
    <property> 
    <name>yarn.resourcemanager.admin.address</name> 
    <value>hadoop-droplet:8033</value> 
    </property> 
    <property> 
    <name>yarn.resourcemanager.webapp.address</name> 
    <value>hadoop-droplet:8088</value> 
    </property> 
    <property> 
    <description>Classpath for typical applications.</description> 
    <name>yarn.application.classpath</name> 
    <value> 
     $HADOOP_CONF_DIR, 
     $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*, 
     $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*, 
     $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*, 
     $YARN_HOME/*,$YARN_HOME/lib/* 
    </value> 
    </property> 
    <property> 
    <name>yarn.nodemanager.aux-services</name> 
    <value>mapreduce.shuffle</value> 
    </property> 
    <property> 
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
    </property> 
    <property> 
    <name>yarn.nodemanager.local-dirs</name> 
    <value>/data/1/yarn/local,/data/2/yarn/local,/data/3/yarn/local</value> 
    </property> 
    <property> 
    <name>yarn.nodemanager.log-dirs</name> 
    <value>/data/1/yarn/logs,/data/2/yarn/logs,/data/3/yarn/logs</value> 
    </property> 
    <property> 
    <description>Where to aggregate logs</description> 
    <name>yarn.nodemanager.remote-app-log-dir</name> 
    <value>/var/log/hadoop-yarn/apps</value> 
    </property> 
    <property> 
    <name>yarn.scheduler.minimum-allocation-mb</name> 
    <value>50</value> 
    </property> 
    <property> 
    <name>yarn.scheduler.maximum-allocation-mb</name> 
    <value>390</value> 
    </property> 
    <property> 
    <name>yarn.nodemanager.resource.memory-mb</name> 
    <value>390</value> 
    </property> 
</configuration> 

mapred-site.xmlの:

<configuration> 
<property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
</property> 

<property> 
    <name>yarn.app.mapreduce.am.resource.mb</name> 
    <value>50</value> 
</property> 
<property> 
    <name>yarn.app.mapreduce.am.command-opts</name> 
    <value>-Xmx40m</value> 
</property> 
<property> 
    <name>mapreduce.map.memory.mb</name> 
    <value>50</value> 
</property> 
<property> 
    <name>mapreduce.reduce.memory.mb</name> 
    <value>50</value> 
</property> 
<property> 
    <name>mapreduce.map.java.opts</name> 
    <value>-Xmx40m</value> 
</property> 
<property> 
    <name>mapreduce.reduce.java.opts</name> 
    <value>-Xmx40m</value> 
</property> 
</configuration> 

がまだ動作していません。 追加情報:私は、クラスタプレビューには、ノードを見ることができます(ここでは同様の問題:Slave nodes not in Yarn ResourceManagerenter image description here

+0

実行しているPC /サーバーの設定は何ですか?それはVMですか? –

+0

私が使用している設定で回答を追加しました。彼らは私のために完全に動作します。 –

答えて

0

あなたは、インスタンスのそれぞれに512 MBのRAMを持っていると糸-site.xmlのとmapredサイト内のすべてのメモリ構成.xmlは500 MB〜3 GBです。クラスタ上では何も実行できません。すべてのものを〜256 MBに変更してください。

また、あなたのmapred-site.xmlの糸によってフレームワークを使用している、あなたは正しくないジョブトラッカーアドレスを持っています。マルチノードクラスタ上のyarn-site.xmlにリソースマネージャ関連のパラメータ(resourcemanager Webアドレスを含む)が必要です。それで、クラスタはあなたのクラスタがどこにあるか分からない。

あなたのxmlファイルの両方を再検討する必要があります。

+0

残念ながら、これは動作しません。私はより多くのRAMメモリを持つマシンでこれを実行しようとします。 – KaP

+0

マシンで設定(コメント)されました:namenode(8GB RAM)+ 2xデータノード(4GB RAM)。同じ効果 – KaP

+1

ヤーンサイトとマップドサイトを新しいクラスターに貼り付けることはできますか? –

2

私はあなたのメモリの設定が間違って取得している、と感じ。YARN構成のチューニングを理解することが

は、私はこれは非常に良い情報源であることが判明:http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_yarn_tuning.html

私はこのブログの指示に従って実行私の仕事を得ることができました。ノード上の物理メモリに比例した設定を変更する必要があります。覚えておくべき

主なものである:mapreduce.map.memory.mbmapreduce.reduce.memory.mb

  • 値はmapreduce.map.java.optsmapreduce.reduce.java.optsの少なくともyarn.scheduler.minimum-allocation-mb
  • 値は周りの対応mapreduce.map.memory.mbmapreduce.reduce.memory.mb構成「の0.8倍の値」であるべきである必要があります。
  • は同様に、yarn.app.mapreduce.am.command-optsの値は

yarn.app.mapreduce.am.resource.mbが続い「の0.8倍の値が」私が使用して設定されなければなりません(私のケースでは、983メガバイト〜(0.8 * 1228メガバイト)がある)と、彼らは完璧に動作します私のために:

糸-site.xmlを:

<property> 
    <name>yarn.scheduler.minimum-allocation-mb</name> 
    <value>1228</value> 
</property> 
<property> 
    <name>yarn.scheduler.maximum-allocation-mb</name> 
    <value>9830</value> 
</property> 
<property> 
    <name>yarn.nodemanager.resource.memory-mb</name> 
    <value>9830</value> 
</property> 

mapred-site.xmlの

<property> 
    <name>yarn.app.mapreduce.am.resource.mb</name> 
    <value>1228</value> 
</property> 
<property> 
    <name>yarn.app.mapreduce.am.command-opts</name> 
    <value>-Xmx983m</value> 
</property> 
<property> 
    <name>mapreduce.map.memory.mb</name> 
    <value>1228</value> 
</property> 
<property> 
    <name>mapreduce.reduce.memory.mb</name> 
    <value>1228</value> 
</property> 
<property> 
    <name>mapreduce.map.java.opts</name> 
    <value>-Xmx983m</value> 
</property> 
<property> 
    <name>mapreduce.reduce.java.opts</name> 
    <value>-Xmx983m</value> 
</property> 

また、答えを参照することもできます。Yarn container understanding and tuning

コンテナの割り当てにもCPUを考慮する場合は、vCoreの設定を追加できます。しかし、これを行うにはCapacitySchedulerDominantResourceCalculatorを使用する必要があります。ここではこれについての議論を参照してください:How are containers created based on vcores and memory in MapReduce2?

+0

あなたの答えをありがとう。私はあなたのconfファイルを拡大縮小するだけで設定を更新しました。まだ効果はありません。あなたのmapred-siteに mapreduce.framework.name ヤーンを持っていないことに気付きました。私はそれを持っていないときに仕事はローカル(正常に)実行されます。 – KaP

+0

私が混乱したらすみません。実際には、私は自分のyarn-site.xmlとmapred-site.xmlにメモリ設定を投稿しました。私のyarn-site.xmlには、mapreduce framework.nameのような多くの設定が含まれています。これらは、既存の設定に加えて、追加する必要のあるメモリ設定です。 –

1

これは、このエラーのために私の場合を解決した:

<property> 
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> 
    <value>100</value> 
</property> 
+0

私は浮動小数点0.0〜1.0の値(1は100%を意味する)だと思います – tokland

5

あなたは、クラスタ内のノードマネージャのステータスを確認する必要があります。 NMノードがディスク容量不足の場合、RMはそれらを「不健全」とマークし、それらのNMは新しいコンテナを割り当てることができません。 「ヘルスレポート」タブは、「ローカル-dirsのが悪い」と言う場合、それはあなたがクリーンアップにこれらのノードからいくつかのディスク領域を必要とする意味http://<active_RM>:8088/cluster/nodes/unhealthy

1)不健康なノードを確認してください。

2)hdfs-site.xmlのDFS dfs.data.dirプロパティを確認します。これは、hdfsデータが格納されているローカルファイルシステム上の場所を示します。

3)これらのマシンにログインし、占有スペースを測定するためにdf -h & hadoop fs - du -hコマンドを使用します。

4)hadoopのごみを確認し、あなたがブロックしている場合は削除してください。 hadoop fs -du -h /user/user_name/.Trashhadoop fs -rm -r /user/user_name/.Trash/*

+0

ありがとうございます。私の場合は、userlogsディレクトリへのアクセス権に問題がありました。 – swojtasiak

1

マスターとスレーブノードでホストファイルを確認してください。私はまさにこの問題がありました。私のhostsファイルが例

127.0.0.0 localhost 
127.0.1.1 master-virtualbox 
192.168.15.101 master 

のマスターノード上でこのように見えた私はそれが働いた

192.168.15.101 master master-virtualbox localhost 

以下のようにそれを変更しました。

0

とにかくそれは私の仕事です。本当にありがとうございます! @KaP

まず最初に、糸をチェックすることです私の糸-site.xmlの

<property> 
      <name>yarn.resourcemanager.hostname</name> 
      <value>MacdeMacBook-Pro.local</value> 
    </property> 
    <property> 
      <name>yarn.nodemanager.aux-services</name> 
      <value>mapreduce_shuffle</value> 
    </property> 
    <property> 
      <name>yarn.resourcemanager.webapp.address</name> 
      <value>${yarn.resourcemanager.hostname}:8088</value> 
    </property> 
    <property> 
     <name>yarn.nodemanager.resource.memory-mb</name> 
<value>4096</value> 
</property> 
<property> 
    <name>yarn.scheduler.minimum-allocation-mb</name> 
    <value>2048</value> 
</property> 
<property> 
<name>yarn.nodemanager.vmem-pmem-ratio</name> 
<value>2.1</value> 

私mapred-site.xmlのだ

<configuration> 
<property> 
      <name>mapreduce.framework.name</name> 
      <value>yarn</value> 
    </property> 

0

だことリソースマネージャーのログ私はこの問題について非常に長い間インターネットを検索しましたが、実際に何が起こっているかを知る方法は誰にも教えてくれませんでした。糸資源管理者のログを確認するのは簡単で簡単です。なぜ人々がログを無視するのか混乱しています。私にとって

は、ログ私は私の職場でのWi-Fiネットワークを切り替えているためだ

Caused by: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=172.16.0.167/172.16.0.167:55622] 

に誤りがあったので、私のコンピュータのIPが変更されました。

+0

FYI:OPの質問では、ジョブは「YarnApplicationState:\t ACCEPTED:AMコンテナの割り当て、起動、RMへの登録を待っています」という状態になっています。それが起こると、まだ利用可能なログはありません。 「ログ」リンクは表示されますが、実際にはどこにもリンクされません(同じページを再ロードするだけです)。 –

0

ディスク使用率が> = 95%のとき、ノードが異常とマークされますので、これらの行yarn-site.xml

<property> 
    <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name> 
    <value>100</value> 
</property> 

は私の問題を解決しました。主に疑似分布モードに適したソリューション。

関連する問題