Я использую кластер YARN + spark 2.4.5. Я запускаю задания, используя docker в качестве режима клиента пряжи. Я настроил мастер и docker клиент следующим образом:
пряжа-сайт. 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>
<property>
<name>yarn.scheduler.fair.assignmultiple</name>
<value>true</value>
</property>
fairscheduler. xml:
<allocations>
<pool name="default">
<schedulingMode>FAIR</schedulingMode>
<maxRunningApps>2</maxRunningApps>
<fairSharePreemptionThreshold>0.6</fairSharePreemptionThreshold>
<fairSharePreemptionTimeout>1</fairSharePreemptionTimeout>
<weight>2</weight>
<minShare>2</minShare>
</pool>
<pool name="today">
<schedulingMode>FAIR</schedulingMode>
<maxRunningApps>2</maxRunningApps>
<fairSharePreemptionThreshold>0.6</fairSharePreemptionThreshold>
<fairSharePreemptionTimeout>1</fairSharePreemptionTimeout>
<weight>2</weight>
<minShare>2</minShare>
</pool>
<pool name="yesterday">
<schedulingMode>FAIR</schedulingMode>
<maxRunningApps>2</maxRunningApps>
<weight>1</weight>
<fairSharePreemptionThreshold>0.4</fairSharePreemptionThreshold>
<fairSharePreemptionTimeout>1</fairSharePreemptionTimeout>
<minShare>2</minShare>
</pool>
</allocations>
Теперь я запускаю два приложения spark в двух разных контейнерах. первый, а затем второй через минуту или две:
spark-submit --deploy-mode client --name job1 --queue today --py-files gs://babadod/spark.zip gs://babadod/spark/main.py --job job1 --job-args date=2020-04-02
spark-submit --deploy-mode client --name job2 --queue yesterday --py-files gs:/babadod/spark.zip gs://babadod/spark/main.py --job job2 --job-args date=2020-04-01
Выходные данные запускаются для каждого из них:
20/04/02 13:52:08 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://namenode:4040
20/04/02 13:52:08 INFO FairSchedulableBuilder: Creating Fair Scheduler pools from /opt/spark/conf/fairscheduler.xml
20/04/02 13:52:09 INFO FairSchedulableBuilder: Created pool: default, schedulingMode: FAIR, minShare: 2, weight: 2
20/04/02 13:52:09 INFO FairSchedulableBuilder: Created pool: today, schedulingMode: FAIR, minShare: 2, weight: 2
20/04/02 13:52:09 INFO FairSchedulableBuilder: Created pool: yesterday, schedulingMode: FAIR, minShare: 2, weight: 1
20/04/02 13:52:09 INFO Utils: Using initial executors = 0, max of spark.dynamicAllocation.initialExecutors, spark.dynamicAllocation.minExecutors and spark.executor.instances
20/04/02 13:52:09 INFO RMProxy: Connecting to ResourceManager at namenode/10.128.15.208:8032
20/04/02 13:52:09 INFO Client: Requesting a new application from cluster with 2 NodeManagers
Первое приложение забирает все доступные ресурсы, а второе - начинается после первого финиша. Что мне не хватает? Спасибо
РЕДАКТИРОВАТЬ
spark-defaults.conf:
spark.master yarn;
spark.dynamicAllocation.enabled true;
spark.shuffle.service.enabled true;
spark.yarn.shuffle.stopOnFailure false;