web-dev-qa-db-ja.com

なぜYARN Javaヒープスペースのメモリエラーですか?

YARNでメモリを設定してみたいので、yarn-site.xmlとmapred-site.xmlでいくつかのパラメーターを設定してみます。ちなみに私はhadoop 2.6.0を使用しています。しかし、mapreduceジョブを実行するとエラーが発生します。それはこのように言います:

15/03/12 10:57:23 INFO mapreduce.Job: Task Id :
attempt_1426132548565_0001_m_000002_0, Status : FAILED
Error: Java heap space
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

私はそれを正しく設定したと思います、私はmap.Java.optsとreduce.Java.optsに小さなサイズ= 64 MBを与えます。次に、mapred-site.xmlでmap.Java.optsとreduce.Java.optsを変更するなど、いくつかのパラメーターを構成しようとしましたが、それでもこのエラーが発生します。 YARNメモリーの仕組みがよくわかりません。ちなみにこれはシングルノードコンピュータでやってみます。

8
Kenny Basuki

Yarnはリソース管理を処理し、MapReduceとリアルタイムワークロードを使用できるバッチワークロードにも対応します。

糸コンテナレベルで設定できるメモリ設定と、マッパーおよびリデューサーレベルでも設定できるメモリ設定があります。メモリは、Yarnコンテナサイズの増分で要求されます。マッパータスクとリデューサータスクはコンテナー内で実行されます。

mapreduce.map.memory.mbおよびmapreduce.reduce.memory.mb

上記のパラメーターはmap-reduceタスクのメモリの上限を示し、このタスクによってサブスクライブされたメモリがこの制限を超えると、対応するコンテナーが強制終了されます。

これらのパラメーターは、マッパーとリデュースタスクにそれぞれ割り当てることができるメモリの最大量を決定します。例を見てみましょう:マッパーは、構成パラメーターmapreduce.map.memory.mbで定義されているメモリの上限にバインドされています。

ただし、yarn.scheduler.minimum-allocation-mbの値がmapreduce.map.memory.mbのこの値より大きい場合、yarn .scheduler.minimum-allocation-mbが順守され、そのサイズのコンテナーが配布されます。

このパラメーターは慎重に設定する必要があり、正しく設定しないと、パフォーマンスの低下やOutOfMemoryエラーが発生する可能性があります。

mapreduce.reduce.Java.optsおよびmapreduce.map.Java.opts

このプロパティ値はmapreduce.map.memory.mb/mapreduce.reduce.memory.mbで定義されているmap/reduceタスクの上限よりも小さい必要があります。 map/reduceタスク用。

11
Gaurav Mishra

@Gauravが言ったことは正しいです。同様の問題が発生したため、以下のようなことを試しました。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>
2
Nagendra