这个错误表明 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,而不是UNHEALTHY或DECOMMISSIONED。
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助手提供,问题来源于学员提问




