yarn.scheduler.maximum-allocation-mb
とyarn.nodemanager.resource.memory-mb
の違いは何ですか?
これらの両方がyarn-site.xml
に表示され、説明が表示されます here 。
yarn.scheduler.maximum-allocation-mb
には次の定義が与えられます:RMでのすべてのコンテナー要求の最大割り当て(MB単位)。これよりも高いメモリリクエストはInvalidResourceRequestExceptionをスローします。これは、リソースマネージャ上のメモリリクエストのみがこの値によって制限されることを意味しますか?
yarn.nodemanager.resource.memory-mb
には、コンテナに割り当てることができる物理メモリの量(MB)の定義が与えられます。これは、クラスター全体のすべてのコンテナーを合計しますか?
しかし、私はまだこれらを区別できません。それらの説明は、それらが同じであると私に思わせます。
さらに紛らわしいことに、それらのデフォルト値はまったく同じです:8192 mb。これらの違いをどのように見分けるのですか?ありがとうございました。
各マシンに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-allocation-mb:
最大値を定義しますコンテナに利用可能なメモリ割り当て MB
つまり、RMは"yarn.scheduler.minimum-allocation-mb"
の増分でのみコンテナにメモリを割り当てることができ、"yarn.scheduler.maximum-allocation-mb"
を超えてはならず、ノードに割り当てられたメモリを超えてはなりません。
yarn-site.xml
<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container->
<value>8192</value>
MapReduceアプリケーションの場合、YARNは各マップを処理するか、コンテナー内のタスクを削減します。また、単一のマシンでは、コンテナーの数を指定できます各ノードで最大20のコンテナーを許可するため、(合計RAM 40 GB)/(コンテナーの20#)=プロパティyarn.scheduler.minimum-allocation-mb
で制御されるコンテナーごとに最小2 GBが必要です。
ここでも、プロパティ"yarn.scheduler.maximum-allocation-mb"
によって制御されるコンテナの最大メモリ使用率を制限したい
たとえば、1つのジョブがマップコンテナーごとに2049 MBのメモリを要求している場合(mapreduce.map.memory.mb=2048 set in mapred-site.xml
)、RMは1つの4096 MB(2*yarn.scheduler.minimum-allocation-mb
)コンテナーを割り当てます。
9999 MBのマップコンテナを要求する巨大なMRジョブがある場合、ジョブはエラーメッセージで強制終了されます。