[解決済み] コンテナがメモリの制限を超えて動作している
質問
Hadoop v1では、7つのマッパーとリデューサーのスロットにそれぞれ1GBのサイズを割り当てていますが、マッパーとリデューサーは正常に動作しています。私のマシンは8Gのメモリと8プロセッサを搭載しています。 YARNでは、同じマシンで同じアプリケーションを実行すると、コンテナエラーが発生します。 デフォルトでは、このような設定になっています。
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
エラーになりました。
Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
次に、mapred-site.xmlにメモリ制限を設定してみました。
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
でもまだエラーが出ます。
Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. Killing container.
なぜマップタスクがこれほど多くのメモリを必要とするのか、混乱しています。私の理解では、1GBのメモリは私のmap/reduceタスクに十分です。コンテナにより多くのメモリを割り当てると、タスクはより多く使用するのはなぜですか?各タスクがより多く分割されるからでしょうか?コンテナのサイズを少し小さくして、より多くのコンテナを作成し、より多くのタスクが並行して実行されるようにするのがより効率的だと思います。問題は、各コンテナが処理できる以上の分割を割り当てられないようにするにはどうすればよいかということです。
どのように解決するのですか?
また、MapReduceの最大メモリ割り当てを適切に設定する必要があります。から この HortonWorks のチュートリアル :
<ブロッククオート[...]
我々のクラスタの各マシンは48GBのRAMを持っています。このRAMの一部は、オペレーティングシステム用に予約しておく必要があります。各ノードで、40GBのRAMをYARN用に割り当て、8GBをオペレーティングシステム用に確保することにします。
この例のクラスタでは、コンテナ用の最小限のRAMを用意しています。 (yarn.scheduler.minimum-allocation-mb) = 2 GBです。したがって、4GB をMapタスクコンテナに、8GBをReduceタスクコンテナに割り当てます。
mapred-site.xmlに。
mapreduce.map.memory.mb
: 4096
mapreduce.reduce.memory.mb
: 8192
各コンテナでは、MapタスクとReduceタスクのためのJVMが実行されます。JVM のヒープサイズは、上記のMapとReduceのメモリより小さく設定する必要があります。 JVMのヒープサイズは、YARNによって割り当てられたコンテナ・メモリの範囲内に収まるように、上記で定義されたMapおよびReduceメモリよりも小さく設定する必要があります。 の範囲内に収まるようにします。
mapred-site.xmlの中で。
mapreduce.map.java.opts
:
-Xmx3072m
mapreduce.reduce.java.opts
:
-Xmx6144m
上記の設定 が使用する物理RAMの上限を設定します。 MapとReduceタスクが使用する物理RAMの上限を設定します。 .
まとめると
-
YARNでは
mapreduce
コンフィグではなくmapred
のものではありません。 EDITです。 このコメントは、質問を編集されたので、もう適用できません。 - あなたが設定しているのは、実際に要求する量であり、割り当てる最大値ではありません。
-
最大限の制限を設定するには
java.opts
の設定で設定されます。
最後に、この他の SO質問 を参照してください。
関連
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] HBaseとHadoop/HDFSの違いについて
-
[解決済み] Hadoopで複数のMapReduceジョブを連鎖させる
-
[解決済み] Hadoopはブロック境界をまたいで分割されたレコードをどのように処理するのか?
-
[解決済み] Hiveの内部テーブルと外部テーブルの違い?
-
[解決済み] HADOOP FS」シェルコマンドと「HDFS DFS」シェルコマンドの違いは何ですか?
-
[解決済み] HDFSディレクトリのサイズを確認する方法は?
-
[解決済み] apache sparkはhadoopなしで動きますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Hbase公式ドキュメント(中国語
-
Hadoopデータディレクトリの移行
-
[解決済み】Hadoop、HBase、Hive、Pigはいつ使う?
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて
-
[解決済み] Hadoopで複数のMapReduceジョブを連鎖させる
-
[解決済み] Hadoopはブロック境界をまたいで分割されたレコードをどのように処理するのか?
-
[解決済み] Hiveの内部テーブルと外部テーブルの違い?
-
[解決済み] apache sparkはhadoopなしで動きますか?