YARN によって管理されているクラスターがあります。と で公平なスケジューリングを有効にyarn-site.xml
しましたfair-scheduler.xml
(詳細については以下を参照してください)。
公平なスケジューリングに関する Cloudera のブログの記事によると、いくつかのタスクをq1
キューにスケジュールし (オンザフライで作成し、デフォルト値などでweigth=1
)、他のいくつかのタスクをtest_queue
( weight=2
) にスケジュールすると、からのタスクはq1
(1 秒後に) プリエンプトされると予想されます。test_queue
のFair Shareのバランスを取りますが、そうはなりません。
代わりに、33% のフェア シェアq1
を持つクラスター リソースの 70% を使用し、67% のフェア シェアを持つリソースの 5% を取得します。test_queue
何か見逃しましたか?
以下は私のYARN構成です:
<!-- yarn-site.xml -->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.scheduler.fair.preemption</name>
<value>true</value>
</property>
と
<!-- fair-scheduler.xml -->
<allocations>
<queue name="test_queue">
<weight>2.0</weight>
<schedulingPolicy>fair</schedulingPolicy>
<fairSharePreemptionTimeout>1</fairSharePreemptionTimeout>
<fairSharePreemptionThreshold>1</fairSharePreemptionThreshold>
</queue>
<defaultFairSharePreemptionTimeout>1</defaultFairSharePreemptionTimeout>
<defaultFairSharePreemptionThreshold>1</defaultFairSharePreemptionThreshold>
<queuePlacementPolicy>
<rule name="specified"/>
<rule name="default" queue="test_queue"/>
</queuePlacementPolicy>
</allocations>
スパークの例から Pi 計算ジョブを送信します。
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 7G --executor-cores 4 /opt/spark2/examples/jars/spark-examples_2.11-2.0.0.jar 1000000