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

AWS EMR YARN无法分配全部请求的Executor问题咨询

问题描述

环境配置

  • 主节点:4核,8GiB内存
  • 核心节点(共2台):每台16核,64GiB内存

预期目标

计划启动6个Executor,每个分配5核、18GiB内存,每台核心节点部署3个Executor(占用15核),预留1核给YARN管理器,充分利用2台核心节点总计32核中的30核资源。

当前配置

Spark应用代码配置

val spark = SparkSession.builder
  .appName("Lab2")
  .config("spark.sql.files.ignoreCorruptFiles", "true")
  .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
  .config("spark.kyro.registrationRequired", "false")
  .getOrCreate()

spark-submit提交参数

--num-executors 6
--executor-cores 5
--executor-memory 18g
--conf spark.dynamicAllocation.enabled=false

已尝试的YARN配置

yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

问题现象

YARN日志显示YarnAllocator请求6个Executor,但仅成功分配4个,每台核心节点仅部署2个Executor,实际仅用到20核,无法达到预期的30核利用率。


问题分析与解决方案

核心原因:内存资源超限+节点资源配置限制

你遇到的问题本质是单节点内存不足以支撑3个18GiB的Executor容器,或是YARN节点的资源预留配置限制了容器分配数量。

1. 内存资源核算

每台核心节点总内存64GiB,YARN默认仅开放物理内存的80%左右作为可分配资源(约51.2GiB),而3个18GiB的Executor总内存需求为54GiB,已经超过节点可用内存上限,因此YARN只能分配2个Executor(总内存36GiB),剩余内存无法启动第3个容器。

2. 分步解决方案

步骤1:调整Executor内存适配节点可用资源

将每个Executor的内存下调至16GiB,3个Executor总内存为48GiB,低于51.2GiB的节点可用内存上限:

--executor-memory 16g

若要更精准,先通过YARN配置yarn.nodemanager.resource.memory-mb确认节点实际可分配内存,再按(节点可分配内存 - 2~4GiB预留内存)/3计算单Executor内存(预留内存用于节点系统进程)。

步骤2:配置YARN节点CPU可用核心数

修改YARN配置yarn.nodemanager.resource.cpu-vcores为15,明确预留1核给YARN管理器:

yarn.nodemanager.resource.cpu-vcores=15

若该值默认低于15,会直接限制单节点无法分配3个5核的Executor。

步骤3:检查YARN队列资源配额

确认应用所在队列的Capacity/Fair调度器配置,确保队列的capacity或max-capacity允许分配6个Executor的总资源(30核、约90GiB内存),避免队列配额不足导致资源分配受限。

步骤4:确保DominantResourceCalculator生效

该配置需写入YARN调度器配置文件(Capacity调度器为capacity-scheduler.xml,Fair调度器为fair-scheduler.xml),并重启YARN服务才能生效。它会同时计算CPU和内存资源占比,避免单一资源耗尽导致的分配限制。

验证方法

调整配置后,提交应用时可添加--conf spark.yarn.maxAppAttempts=1避免重试干扰,然后通过YARN ResourceManager UI(默认端口8088)查看节点资源使用情况和容器分配详情,确认每台节点的CPU、内存是否被充分利用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:08:24