web-dev-qa-db-ja.com

「コンテナがApplicationMasterによって強制終了された」ためにHadoop Mapperが失敗する

Hadoopでmap reduceプログラムを実行しようとしています。

Hadoopシングルノードクラスターにジョブを送信するとき。ジョブは作成されますが、メッセージで失敗します

「コンテナがApplicationMasterによって殺された」

使用される入力のサイズは10 MBです。

入力ファイル400 KBの同じスクリプトを使用した場合、成功しました。ただし、サイズが10 MBの入力ファイルでは失敗します。

私の端末に表示される完全なログは次のとおりです。

    15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native-  hadoop library for your platform... using builtin-Java classes      where applicable
Submitting job on the cluster...
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false
15/05/29 09:52:29 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 09:52:41 INFO mapreduce.Job:  map 100% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job:  map 0% reduce 0%
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

ここでのマッパーは、ここで入力ファイルを処理する他のプログラムをトリガーしています。マッパーによってトリガーを取得しているプログラムは、通常大量のメモリを消費します。

この点で私を助けてください。

15
Harry

yarn-site.xmlに以下のプロパティを含め、VMを再起動します。

<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
   <description>Whether virtual memory limits will be enforced for containers</description>
</property>

<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
   <value>4</value>
   <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
10
Nagendra

コンテナは、ヤーンJVMプロセスです。 Mapreduceのアプリケーションマスターサービスでは、マッパータスクとレデューサータスクはすべて、yarnフレームワーク内で実行されるコンテナーです。

この問題を解決するには、リデューサーの数を増やす(たとえばmapreduce.job.reduces=10)か、削減ヒープサイズを増やす(mapreduce.reduce.Java.opts=-Xmx2014m

実行時にリデューサーの数を固定したい場合は、コマンドラインでMap/Reduceジョブを渡すときに行うことができます。 -D mapreduce.job.reduces=10を必要な数で使用すると、実行時にその多くのレデューサーが生成されます。

コードでは、JobConf変数を構成して、マッパーとレデューサーの数を設定できます。ジョブとしてJobConf変数があるとします。

Configuration conf = new Configuration();
Job job = new Job(conf);
job.setNumReduceTasks(10); // 10 reducers

この特定のジョブのファイルを小さいサイズに分割して、メモリの問題を回避することもできます。

それでも問題が解決しない場合は、糸のログを確認してログを投稿してください。

3
Sandeep Singh