ZBLOG

YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

这个错误表明 YARN 调度器无法为作业分配资源,通常是因为集群中的 NodeManager 未注册资源不足。以下是逐步排查和解决方案:


1. 检查 NodeManager 是否正常运行

(1) 在所有工作节点确认 NodeManager 进程

jps | grep NodeManager   # 确保有 "NodeManager" 进程
  • 如果没有运行,手动启动:
yarn-daemon.sh start nodemanager   # Hadoop 2.x
# 或者(Hadoop 3.x+)
yarn --daemon start nodemanager

(2) 检查 ResourceManager UI

访问 http://<ResourceManager_IP>:8088/cluster/nodes,确认:

  • 所有预期的 NodeManager 出现在列表中。
  • 状态 应为 RUNNING,而不是 UNHEALTHYDECOMMISSIONED

2. 验证资源配额是否充足

(1) YARN UI / CLI查看可用资源

yarn node -list          # 查看节点资源状态

# 示例输出应显示 vcores/memory:
Nodes: 
192.168.1.101:8041 (memory:8192, vcores:8)

如果显示 0/0,说明资源未被正确上报。

(2) ResourceManager日志检查

tail -n100 /var/log/hadoop-yarn/yarn-yarn-resourcemanager-*.log | grep -i "resource\|nodemanager"

常见问题:

  • Invalid resource request: YARN配置的 vcores/memory > NodeManager实际值。
  • Node not included in any partition: YARN节点标签配置错误。

3. YARN资源配置调整

(1) yarn-site.xml关键参数

确保以下参数合理(单位:MB):

<!-- ResourceManager -->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>16384</value> <!-- <= NodeManager物理内存 -->
</property>

<!-- NodeManager -->
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>8192</value> <!-- <=机器可用内存的80% -->
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value> <!--关闭虚拟内存检查(调试时可临时禁用)-->
</property>

(2) Spark/MR作业的资源请求匹配

如果提交作业时指定了超量资源(如 spark.executor.memory=10G),但 NodeManager仅提供 8G,会导致调度失败。
调整方式:

spark-submit --executor-memory4g ...   # ≤ yarn.nodemanager.resource.memory-mb

4. Linux系统级问题排查

(1) ulimit限制检查

NodeManager可能因文件描述符限制无法启动:

ulimit -a              #查看当前用户限制

#在/etc/security/limits.conf中增加(需重启生效):
* soft nofile65536 
* hard nofile65536

(2) SElinux/Firewall干扰

临时关闭防火墙测试:

systemctl stop firewalld   # CentOS/RHEL
ufw disable               # Ubuntu/Debian

setenforce0               #禁用SELinux(临时)

5. DataNode与NodeManager协同问题

如果 HDFS DataNode未运行,可能导致依赖HDFS的作业卡住:

hdfs dfsadmin-report     #确认所有DataNode在线

#强制重新加载节点(ResourceManager)
yarn rmadmin-refreshNodes 

6. API调用延迟问题(云环境常见)

在云环境中,首次请求可能因冷启动延迟超时。解决方法:

  • 增加客户端超时时间:
<!-- mapred-site.xml -->
<property>
    <name>mapreduce.client.submission.timeout</name>
    <value600000></value><!--单位:毫秒-->
</property>

请根据您的场景选择对应步骤。若仍无法解决,请提供以下信息进一步诊断:

  • YARN版本 (yarn version)
  • /etc/hadoop/conf/yarn-site.xml中与资源相关的配置片段;
  • Resource Manager UI截图或NodeManage日志片段。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23973

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?