首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >急着跑 MapReduce 任务,提交后却卡在 ACCEPTED 不动?我 30 分钟定位到根因

急着跑 MapReduce 任务,提交后却卡在 ACCEPTED 不动?我 30 分钟定位到根因

原创
作者头像
高老师
发布2025-09-17 18:01:01
发布2025-09-17 18:01:01
930
举报

上周赶数据处理需求,往Hadoop集群提交MapReduce任务后,终端就一直停在“Running job: job_xxxxxx”,等了5分钟都没动静。打开YARN的Web界面一看,任务状态一直是ACCEPTED,下面还挂着一行小字:“waiting for AM container to be allocated, launched and register with RM”。

眼看下班前要出结果,我盯着屏幕急得冒汗——相信做大数据开发的同学,都遇到过这种“任务卡住不动”的糟心场景。好在最后一步步排查出问题,30分钟就解决了,今天把整个过程梳理出来,帮大家少踩坑。

一、先看日志!从“卡住现象”定位关键报错

一开始我以为是任务提交命令写错了,重新执行了一遍yarn jar sunny.jar /sunny/access.log /sunny/out,结果还是一样:终端只打印到“Submitted application application_xxxxxx”,之后就没下文了。

这时候别瞎猜,YARN的任务详情和日志是最好的线索。我打开YARN的Web控制台(默认地址是http://localhost:8088),找到卡住的任务点进去,在“Diagnostics”(诊断信息)里看到了关键提示:

代码语言:bash
复制
ACCEPTED: waiting for AM container to be allocated, launched and register with RM.

翻译过来就是“等待AM容器分配、启动并向ResourceManager注册”——简单说,就是YARN的“资源管理器”没给任务分配到执行资源,问题肯定出在集群的资源配置或服务状态上。

接着我用jps命令查看Hadoop相关进程是否正常,结果一眼看出了问题:

代码语言:bash
复制
sphynx@sphynx-Ubuntu:~$ jps
15168 Jps
15073 RunJar
14609 ResourceManager  # 资源管理器已启动
14257 DataNode         # 数据节点已启动
14097 NameNode         # 名称节点已启动
14458 SecondaryNameNode #  secondary节点已启动

少了NodeManager进程! NodeManager是每个节点上负责管理容器、分配资源的核心组件,它没启动,YARN根本没法给任务分配容器(AM就是ApplicationMaster的容器),任务自然只能卡在ACCEPTED状态。

二、追根溯源:为什么NodeManager启动不了?

既然NodeManager没起来,下一步就是查它的启动日志——Hadoop的日志默认在$HADOOP_HOME/logs目录下,找到yarn-sphynx-nodemanager-xxx.log(sphynx是我的用户名),打开后很快看到了重复的报错:

代码语言:bash
复制
Recieved SHUTDOWN signal from Resourcemanager, Registration of NodeManager failed, Message from ResourceManager: NodeManager from localhost doesn't satisfy minimum allocations, Sending SHUTDOWN signal to the NodeManager.

这句话直接点出了原因:NodeManager向ResourceManager注册时,因为“不满足最小资源分配要求”,被ResourceManager主动发送了关闭信号

说白了就是:我当前节点的内存、CPU配置,没达到YARN要求的“最小资源标准”,所以NodeManager一启动就被干掉了。这时候再想一下,前几天刚给服务器装了其他服务,可能是Hadoop的默认资源配置不够用了。

三、3步解决:修改配置→重启服务→验证任务

找到问题根源,解决起来就很直接,核心是调整YARN的资源配置,让NodeManager满足最小资源要求。

步骤1:找到YARN的配置文件yarn-site.xml

Hadoop的配置文件默认在$HADOOP_HOME/etc/hadoop目录下,我这里的路径是/usr/local/hadoop/etc/hadoop/yarn-site.xml。用vim打开这个文件:

代码语言:bash
复制
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

步骤2:添加资源配置项

<configuration>标签内,添加NodeManager的内存和CPU核心配置(根据自己服务器的硬件调整,我这里服务器是8G内存,所以给4G给NodeManager):

代码语言:xml
复制
<property>
    <!-- NodeManager可使用的最大内存,单位是MB -->
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value> <!-- 我设置为4096MB(4G),根据服务器内存调整 -->
</property>
<property>
    <!-- NodeManager可使用的CPU核心数 -->
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>4</value> <!-- 服务器是8核,给4核足够用 -->
</property>

添加完后,按Esc输入:wq保存退出。

步骤3:重启YARN服务,验证NodeManager状态

先停止当前的YARN服务(如果之前ResourceManager是启动的),再重新启动:

代码语言:bash
复制
# 停止YARN服务(在Hadoop安装目录的sbin文件夹下)
cd /usr/local/hadoop/sbin
./stop-yarn.sh

# 启动YARN服务
./start-yarn.sh

启动完成后,再用jps命令查看进程:

代码语言:bash
复制
sphynx@sphynx-Ubuntu:~$ jps
17714 NodeManager      # 终于看到NodeManager启动了!
16868 NameNode
17397 ResourceManager
17241 SecondaryNameNode
17034 DataNode
17852 Jps

NodeManager成功启动,这时候再重新提交MapReduce任务:

代码语言:bash
复制
yarn jar sunny.jar /sunny/access.log /sunny/out

这次终端很快就打印出“Map 0% Reduce 0%”的进度条,YARN控制台里任务状态也从ACCEPTED变成了RUNNING——不到1分钟,任务就执行完成了!

四、避坑总结:遇到MapReduce卡住,先做这3件事

  1. 先查YARN控制台状态:任务卡住先看Web界面(http://localhost:8088),ACCEPTED状态大概率是资源没分配,RUNNING卡住可能是Map/Reduce任务本身的问题(比如数据倾斜)。
  2. 用jps检查进程:NodeManager、ResourceManager、DataNode、NameNode这4个核心进程必须都在,少一个都可能导致任务失败,尤其是NodeManager,容易被忽略。
  3. 别忽略日志文件:Hadoop的日志是“排障神器”,NodeManager的日志在yarn-用户名-nodemanager-xxx.log,ResourceManager的日志在yarn-用户名-resourcemanager-xxx.log,关键报错基本都在里面。

最后再提醒一句:配置文件修改后,一定要重启对应的服务才能生效!我当时第一次改完没重启,以为配置没起作用,白慌了5分钟——大家别犯和我一样的低级错误~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、先看日志!从“卡住现象”定位关键报错
  • 二、追根溯源:为什么NodeManager启动不了?
  • 三、3步解决:修改配置→重启服务→验证任务
    • 步骤1:找到YARN的配置文件yarn-site.xml
    • 步骤2:添加资源配置项
    • 步骤3:重启YARN服务,验证NodeManager状态
  • 四、避坑总结:遇到MapReduce卡住,先做这3件事
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档