spark executor cores设置未生效
[toc]
# 问题
在提交spark任务时,指定executor.cores
使用cpu核数,但提交后实际未生效
–executor-cores 4
或者 set spark.executor.cores =4
指定
ON YARN模式下可以使用选项 –num-executors 来直接设置application的executor数。 该选项对应的配置参数是 spark.executor.instances
实际配置:
set spark.executor.cores=4;
set spark.executor.memory=8g;
set spark.executor.instances=11;
1
2
3
2
3
实际使用了12个core,并不是11*4+1=45
# 解决方法
因为我们的capacity schedule使用的是DefaultResourceCalculator,那么DefaultResourceCalculator它在加载container时其实仅仅只会考虑内存而不考虑cores。
所以,如果我们想让它既考虑内存也考虑cores的话,需要修改文件$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml
将
如果没有该配置,则默认为该配置
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
</property>
1
2
3
4
5
2
3
4
5
修改为
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
1
2
3
4
2
3
4
请注意每个节点的配置文件都需要修改。并且重启Yarn。
再提交任务发现,实际使用的core为45个。
以上的一切配置都是基于capacity调度器进行配置的,但是如果你使用的是fair调度器,那么无需配置该参数,fair调度器已经有该功能。
- 参考:https://blog.csdn.net/qq_35440040/article/details/78963722
上次更新: 2023/03/10, 22:18:19