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

Spark YARN Cluster模式下WordCount任务持续ACCEPTED状态原因排查

Spark on YARN任务持续处于ACCEPTED状态的排查方案

你遇到的这个情况我之前帮很多开发者解决过——Spark任务提交到YARN后一直卡在INFO Client: Application report for application_xxx (state: ACCEPTED),本质上是YARN的ResourceManager还没为你的任务分配到足够的运行资源,或者集群配置存在冲突。咱们从几个最常见的方向排查:

1. YARN集群可用资源耗尽

这是最普遍的原因。YARN会先把任务标记为ACCEPTED,进入等待队列,直到有NodeManager能提供它需要的CPU、内存资源。

  • 你可以打开YARN的WebUI(默认地址是http://你的Master节点IP:8088),在Nodes页面查看每个Worker节点的可用内存、vCore占比;
  • 再到Applications页面看等待队列里的任务数量,如果队列积压严重,你的任务就得排队等资源释放。
  • 解决办法:暂停一些非核心任务腾出资源,或者调整YARN的节点资源配置(修改yarn-site.xml里的yarn.nodemanager.resource.memory-mb、yarn.nodemanager.resource.cpu-vcores参数,改完记得重启NodeManager服务)。

2. Spark任务的资源请求超出YARN限制

如果你提交任务时没指定资源参数,Spark会用默认配置,但如果默认请求的内存/CPU超过了YARN允许的单容器上限,ResourceManager会一直卡着不分配。
你可以在提交命令里显式指定合理的资源参数试试,比如:

spark-submit --class com.exsparkbasic.ExSparkBasic --master yarn-cluster --executor-memory 2G --executor-cores 1 --num-executors 2 ~/Wordcount.jar 10

注意这些参数不能超过YARN的单容器资源上限(可以在YARN WebUI的Cluster页面查看Maximum Container Memory和Maximum Container vCores的值)。

3. NodeManager服务状态异常

虽然你通过Spark和HDFS的WebUI确认了Worker节点存在,但有可能NodeManager服务出现假死或通信故障。
在Master节点执行以下命令检查节点状态:

yarn node -list

如果输出里有节点状态是UNHEALTHY或者未显示,就到对应的Worker节点重启NodeManager:

yarn-daemon.sh stop nodemanager
yarn-daemon.sh start nodemanager

4. 重点查看diagnostics日志内容

你提到日志里有diagnostics: ...的部分,这是YARN给出的直接报错原因,比如“Insufficient resource request”(资源请求不足)、“NodeManager not responding”等。一定要把这部分完整内容提取出来,它能帮你直接定位问题根源——比如如果是资源不够,diagnostics里会明确说明任务需要多少资源,当前集群剩余多少可用。

内容的提问来源于stack exchange,提问作者김태수

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:08:15