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

YARN如何计算Spark应用的资源分配及占用比例?

YARN Spark 应用资源占用问题答疑

YARN 应用资源使用量统计逻辑

YARN 统计的应用资源占用是应用已申请且被分配的资源配额总额,和作业实际运行时的CPU、内存实时消耗无关。只要应用还在运行、没有释放持有的配额,不管作业是空闲还是满负载,YARN统计的占用量都不会变化。

资源占用和Spark提交参数的关系

你提到的--executor-cores、--executor-memory、--driver-memory确实是决定YARN资源占用的核心参数:

  • Spark on YARN模式下,提交作业时指定的这些参数就是Spark向YARN申请资源的依据,YARN分配资源后就会按分配的总额统计占比
  • 你固定了这些参数、也固定了Executor数量的情况下,Spark向YARN申请的总配额就固定了,所以YARN显示的资源占比不会随作业复杂度、数据规模变化,这就是你之前看到占比固定为11.39%的直接原因。

3.61%占比的计算逻辑

YARN UI显示的应用资源占比默认用**优势资源公平调度(DRF)**规则计算:分别计算应用占用的vcore占集群总可调度vcore的比例、内存占集群总可调度内存的比例,取两个比例中更大的那个作为最终显示值。

你给出的场景参数:4节点,每节点14vcore,12个Executor,每个1核、600MB内存,得到3.61%的占比是按内存维度计算来的:

  1. 首先要注意,YARN给每个Spark Executor/Driver分配的内存,会在你配置的内存基础上额外加堆外内存overhead,默认值为配置内存的10%,最低384MB,你可以通过spark.executor.memoryOverhead、spark.driver.memoryOverhead调整这个值
  2. 你这个应用的总分配内存 = 12个Executor的总分配内存 + Driver的总分配内存
  3. 代入3.61%的占比可以反推:你集群的总可调度内存(所有NodeManager节点yarn.nodemanager.resource.memory-mb配置的累加值)约为200~360GB范围,这个是常规4节点集群的合理内存配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:15:04