YARN环境下是否可强制ApplicationMaster固定运行在同一节点
Spark ApplicationMaster 固定运行在客户端问题解决方案
重要提示:client部署模式下Spark Driver默认运行在提交节点,不要将Driver进程误判为ApplicationMaster,请先通过YARN WebUI确认ApplicationMaster的实际运行节点,再进行排查
常见原因与排查方法
1. YARN节点标签配置限制
- 若集群给客户端所在节点绑定了专属的AM调度标签,同时Spark提交时指定了
spark.yarn.am.nodeLabelExpression参数匹配该标签,ResourceManager只会将AM调度到符合标签要求的客户端节点 - 排查命令:执行
yarn cluster --list-node-labels查看集群节点标签配置,同时检查提交脚本中是否包含上述标签参数
2. 非客户端节点不满足AM资源要求
- 其余集群节点没有足够的资源启动AM:
- 确认非客户端节点的NodeManager状态正常,执行
yarn node -list -all检查节点是否处于RUNNING、健康状态 - 核对NodeManager配置的
yarn.nodemanager.resource.memory-mb、yarn.nodemanager.resource.cpu-vcores剩余资源,是否满足spark.yarn.am.memory、spark.yarn.am.cores指定的AM启动资源阈值
- 确认非客户端节点的NodeManager状态正常,执行
3. Spark提交配置错误
- 若提交参数中指定了
spark.yarn.am.host强制绑定AM运行地址为客户端IP,所有模式下都会将AM调度到对应机器 - 确认提交命令的master参数为
yarn而非local模式,示例正确提交命令:
spark-submit --master yarn --deploy-mode cluster <应用jar包路径> <应用参数>
4. YARN调度规则限制
- 检查
yarn.resourcemanager.placement-constraints等调度配置,是否配置了AM必须调度到特定节点/机架的规则 - 确认YARN节点准入白名单没有限制AM调度到其余集群节点
快速验证方法
临时关闭客户端节点的NodeManager服务后重新提交应用:
- 若应用正常运行且AM调度到其他节点,说明是调度规则/标签配置问题
- 若应用提交失败报错无可用资源,说明其余节点不满足AM启动的资源要求
内容的提问来源于stack exchange,提问作者Patrick Schulz
相关产品推荐
相关产品推荐

