You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YARN运行应用页Allocated CPU VCores与Spark UI Executors页Cores不一致问题

核心原因
  • 该现象既不是统计偏差也不是已知Bug,是YARN默认资源计算器的统计逻辑和Spark资源申请逻辑不一致导致的。
  • YARN默认使用DefaultResourceCalculator作为资源计算器,该计算器仅统计内存资源,完全不统计CPU资源:不管你给单个Executor Container配置多少CPU核,YARN都会把每个Container(Driver和Executor各占用1个Container)统一统计为1个vCore,因此你会看到总分配vCore数为1(Driver)+1(Executor)=2。
  • Spark UI显示的25核以及实际观察到的25个并行任务是真实生效的配置:Spark侧的任务槽位完全按照spark.executor.cores参数分配,不受YARN侧CPU统计逻辑的影响,任务并行度不会出现损失。
让YARN侧显示正确vCore数的方法

如果需要YARN页面的CPU统计值和实际配置一致,需要修改YARN的资源计算器配置:

  • 若使用Capacity Scheduler(默认调度器),修改yarn-site.xml中的配置:
<property>
  <name>yarn.scheduler.capacity.resource-calculator</name>
  <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
  • 若使用Fair Scheduler,修改yarn-site.xml中的配置:
<property>
  <name>yarn.scheduler.fair.resource-calculator</name>
  <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
  • 修改配置后重启YARN ResourceManager服务,后续提交的Spark任务在YARN页面就会显示正确的vCore分配数,你的场景下会显示为1(Driver)+25(Executor)=26个vCore。
注意事项

未修改资源计算器配置的情况下,YARN侧的vCore统计值仅为展示异常,完全不影响Spark任务的实际运行效果和并行度,无需担心任务性能受损。

内容的提问来源于stack exchange,提问作者Vikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 14:24:03