这个错误表明 YARN 应用程序(Spark/Flink 等任务)已失败退出,导致客户端无法继续与集群通信。以下是详细分析和解决方案:
错误原因
资源不足
- 申请的资源(CPU/Memory)超过集群可用资源。
- NodeManager 节点物理资源耗尽。
任务自身问题
- 用户代码(如 Spark Job)抛出未捕获的异常。
- 依赖项缺失(如 JAR 包、配置文件未上传到 YARN)。
YARN 配置问题
yarn-site.xml中资源分配参数(如yarn.nodemanager.resource.memory-mb)设置过小。- ResourceManager 或 NodeManager 未正确启动。
日志提示
关键日志通常位于:/var/log/hadoop-yarn/yarn-<user>-application_*.log
解决步骤
1. 检查 YARN Application 状态
yarn application -list | grep <your_application_id>
如果状态为 FAILED,查看详细日志:
yarn logs -applicationId <application_id>
2. 验证集群资源
确认 NodeManager 资源分配:
yarn node -list检查各节点的
Memory/VCores是否足够。调整资源配置:
在提交任务时增加资源(例如 Spark):spark-submit \ --master yarn \ --executor-memory 4G \ --num-executors 10 \ ...
3. Review YARN配置
修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml:
<!-- NodeManager可用内存 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value> <!--根据实际硬件调整-->
</property>
<!--单个容器最大内存 -->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
重启 YARN:
stop-yarn.sh && start-yarn.sh
4.检查用户代码
如果是自定义任务失败:
- 本地调试:先在独立模式(Local Mode)下测试代码。
- 依赖项:确保所有依赖 JAR/文件通过
--jars或--files上传到 YARN。
5.监控系统资源
在目标节点上检查内存/CPU使用情况:
top -u yarn #查看YARN进程资源占用
free -h #剩余内存
df -h #磁盘空间是否不足
常见修复案例
Spark on YARN OOM
增加 Executor内存并启用堆外内存:spark-submit --conf spark.yarn.executor.memoryOverhead=1024 ...ApplicationMaster崩溃
调大 AM内存:spark-submit --conf spark.yarn.am.memory=2G ...ClassNotFoundException
确保--jars包含所有依赖包。
如何提供更多信息
请分享以下内容以便进一步诊断:
yarn logs -applicationId <id>的输出片段;
- Spark/Flink任务的完整提交命令;
/var/log/hadoop-yarn/yarn-*.log中的关键错误段落。
内容由零声教学AI助手提供,问题来源于学员提问




