Yarn UI及命令无应用信息显示,同类问题方案无效求助
排查YARN UI及命令行看不到Hadoop Streaming应用的问题
先别急,咱们一步步来排查这个问题——既然你已经确认集群节点都处于存活状态,那重点就放在作业提交链路、YARN配置和运行状态上:
1. 先确认作业是否真的提交到YARN了
很多时候看似提交了作业,但其实没成功落地到YARN,你可以这么验证:
- 重新运行Streaming作业时加上
-verbose参数,仔细盯紧输出日志,有没有出现类似Submitted application application_xxxxxxxxx_0001的提示?如果没有,说明作业根本没提交到YARN,自然不会在UI或命令行里显示。 - 检查提交命令的语法是否正确:比如有没有指定合法的
-input/-output(注意output目录必须是不存在的),-mapper/-reducer的脚本路径是否正确、是否有执行权限。
2. 检查YARN核心配置(yarn-site.xml)
主节点的yarn-site.xml配置错误是这类问题的高发原因,重点核对这几个参数:
yarn.resourcemanager.address、yarn.resourcemanager.scheduler.address、yarn.resourcemanager.resource-tracker.address:这些参数必须指向你的主节点IP或主机名,不能是localhost——否则从节点无法连接主节点的ResourceManager,作业没法被调度。yarn.nodemanager.aux-services:必须设置为mapreduce_shuffle,同时要确保yarn.nodemanager.aux-services.mapreduce_shuffle.class配置为org.apache.hadoop.mapred.ShuffleHandler,这是MapReduce作业运行的必要前提。
3. 查看YARN日志找错误线索
直接看日志能快速定位隐藏问题:
- 主节点ResourceManager日志:默认路径是
$HADOOP_HOME/logs/yarn-*-resourcemanager-*.log,搜索ERROR或WARN关键词,比如有没有连接失败、资源不足(内存/CPU不够)的提示。 - 从节点NodeManager日志:路径是
$HADOOP_HOME/logs/yarn-*-nodemanager-*.log,检查有没有无法注册到ResourceManager、容器启动失败的报错信息。
4. 确认MapReduce框架配置(mapred-site.xml)
如果MapReduce没配置成YARN模式,作业会在本地运行,YARN自然看不到:
- 确保
mapreduce.framework.name设置为yarn,而不是local。 - 检查
mapreduce.application.classpath是否包含了正确的Hadoop依赖路径,避免作业因找不到核心类而启动失败。
5. 排查用户权限问题
普通用户提交作业时,可能会因为权限不足被YARN拒绝:
- 试试切换到Hadoop专用用户(比如
hadoop用户)重新提交作业:sudo -u hadoop 你的Streaming完整命令。 - 确认HDFS上的输入/输出目录权限是否允许当前用户读写,比如用
hdfs dfs -ls /你的输入目录查看,若权限不足,先执行hdfs dfs -chmod 755 /目标目录路径调整。
6. 验证集群网络连通性
主从节点之间的YARN端口必须能正常通信:
- 在从节点用
nc命令测试主节点的关键端口,比如:nc -zv 主节点IP 8032(ResourceManager资源跟踪端口)、nc -zv 主节点IP 8088(YARN UI端口),如果连接失败,检查防火墙是否开放了这些端口,或者主机名解析是否正确。
7. 重启YARN服务试试
有时候服务启动时的异常会导致无法接收作业,不妨重置一下:
- 先停止YARN:
stop-yarn.sh,等几秒后再启动:start-yarn.sh,然后重新提交作业,再去YARN UI和执行yarn application -list -appStates ALL查看结果。
内容的提问来源于stack exchange,提问作者cdt




