web-dev-qa-db-ja.com

Apache Hadoop糸-コアの利用率が低い

yarn-site.xmlの設定をいじくり回しても、つまり以下のすべてのオプションを使用します

yarn.scheduler.minimum-allocation-vcores
yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.maximum-allocation-vcores

Sparkクラスタのすべてのコアを利用するために、まだアプリケーションを取得できません。sparkエグゼキュータは、利用可能なすべてのメモリを正しく使用しているようです。しかし、各エグゼキューターは単一のコアのみを取得し続け、それ以上は実行しません。

spark-defaults.confで設定されたオプションは次のとおりです

spark.executor.cores                    3
spark.executor.memory                   5100m
spark.yarn.executor.memoryOverhead      800
spark.driver.memory                     2g
spark.yarn.driver.memoryOverhead        400
spark.executor.instances                28
spark.reducer.maxMbInFlight             120
spark.shuffle.file.buffer.kb            200

spark.executor.coresは3に設定されていますが、機能しないことに注意してください。どうすれば修正できますか?

28
Nerrve

問題はyarn-site.xmlまたはspark-defaults.confにあるのではなく、実際にはコアをエグゼキューターに割り当てるか、MapReduceジョブの場合はMappers/Reducersに割り当てるリソース計算機にあります。

デフォルトのリソース計算機、つまりorg.Apache.hadoop.yarn.util.resource.DefaultResourceCalculatorは、コンテナの割り当てにメモリ情報のみを使用し、CPUスケジューリングはデフォルトでは有効になっていません。メモリとCPUの両方を使用するには、org.Apache.hadoop.yarn.util.resource.DominantResourceCalculatorファイルでリソース計算機をcapacity-scheduler.xmlに変更する必要があります。

変更する必要があるのは次のとおりです。

<property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.Apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
48
Nerrve

同様の種類の問題があり、コードからspark.executor.cores as 5を設定していました。デフォルトのコアである1をとっただけの場合でも。 spark UIと環境タブでは、5つのコアが表示されていました。しかし、executorsタブを確認していると、1つのプロセスが実行されているだけです[〜#〜] running [ 〜#〜]エグゼキュータに対する状態。spark version 1.6.を使用していました。

それで、私はspark-submitコマンドを--conf spark.executor.cores=5としてヒットしようとしましたが、これは5コアを使用するのと同じようにうまく機能しています

あるいは単に

--executor-cores 5も機能します。

0
whoisthis