2017-05-07 1 views
9

yarn.scheduler.maximum-allocation-mbyarn.nodemanager.resource.memory-mbの違いは何ですか?`yarn.scheduler.maximum-allocation-mb`と` yarn.nodemanager.resource.memory-mb`の違いは?

これらは両方ともyarn-site.xmlにあります。説明はhereです。

yarn.scheduler.maximum-allocation-mbは、次のように定義されます。RMでのコンテナ要求ごとの最大割り当て量(MB)。これより高いメモリ要求は、InvalidResourceRequestExceptionをスローします。これは、resourcemanager上のメモリ要求だけがこの値によって制限されるのを意味しますか?

yarn.nodemanager.resource.memory-mbは、の定義が与えられます。コンテナに割り当てられる物理メモリの量(MB単位)。これは、クラスタ全体のすべてのコンテナの合計金額を合計したものですか?

私はまだこれらの間を区別できません。それらの説明は私が彼らが同じだと思うようにします。

これらのデフォルト値はまったく同じです:8192 mb。これらの違いをどうやって伝えますか?ありがとうございました。

答えて

15

48 GBのRAMを持つ各マシンでクラスタを設定する場合を考えてみましょう。このRAMの一部は、オペレーティングシステムやその他のインストール済みアプリケーション用に予約されている必要があります。

yarn.nodemanager.resource.memory-MB:コンテナに割り当てることができるMB物理メモリの

量は、。これは、YARNがこのノードで利用できるメモリの量を意味します。したがって、このプロパティー は、そのマシンの合計メモリーより小さくなる必要があります。

<name>yarn.nodemanager.resource.memory-mb</name> 
<value>40960</value> <!-- 40 GB --> 

次のステップは、コンテナに利用可能なリソースの合計を分割する方法に関するYARNガイダンスを提供することです。これは、コンテナに割り当てるRAMの最小単位を指定することで行います。 yarn-site.xml

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container -> 
<value>2048</value> 

yarn.scheduler.maximum割り当て-MBにおいて

それはRMを意味MB

で容器に使用可能な最大メモリ割り当てを定義"yarn.scheduler.minimum-allocation-mb"の単位でコンテナにメモリを割り当てることができ、"yarn.scheduler.maximum-allocation-mb"およびそれを超えることはできませんdは、ノードの割り当てられた総メモリより大きくはない。

各マップのMapReduceアプリケーション、糸処理についてyarn-site.xml

<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container-> 
<value>8192</value> 

で又は容器及び容器の数が存在することができる単一のマシン上でタスクを減らします。 各ノードに最大20個のコンテナを許可する必要があります(合計40 GBのRAM)/(コンテナ20個)=プロパティによって制御されるコンテナ当たり最小2 GB yarn.scheduler.minimum-allocation-mb

再度制限します一つの仕事が地図コンテナあたり2049メガバイトのメモリ(mapreduce.map.memory.mb=2048 set in mapred-site.xml)を求めている場合は財産例えば"yarn.scheduler.maximum-allocation-mb"

によって制御されるコンテナの最大メモリ使用率は、RMはそれを1 4096メガバイト(2*yarn.scheduler.minimum-allocation-mb)コンテナを提供します。

9999 MBのマップコンテナを要求する巨大なMRジョブがある場合、そのジョブはエラーメッセージで強制終了されます。

+0

恐ろしい答えです! – Candic3

+0

'<! - コンテナあたりのRAM - > ' - 私は 'spark.executor.memory'はコンテナごとにどれくらいのメモリが設定されていると思うので、必ずしも"コンテナあたりのRAM " /実行者。 – Candic3

+0

これらの設定はスパークと相互作用しますか?私はスパークがこれらの設定を上書きすると思います、正しいですか?特に容量スケジューラを使用している場合は.... – Candic3

関連する問題