4节点Hadoop HA集群启动后自动启动冗余YARN应用且无日志求助
嘿,碰到这种没日志还自动跑无用YARN应用的情况确实挺头疼的,我给你梳理几个实用的排查方向,一步步来拆解问题:
一、先定位自动启动的YARN应用来源
首先得搞清楚这些自动启动的应用到底是什么,哪怕没有日志,也能通过YARN命令先拿到基础信息:
- 执行
yarn application -list -appStates ALL列出所有应用(包括已完成的),重点关注这些自动启动应用的Application-Id和应用名称 - 再用
yarn application -status <你的Application-Id>查看应用的提交者、所属队列、提交时间等信息,初步判断是系统自带服务触发,还是误配置的脚本/定时任务导致的
二、检查Hadoop核心配置是否存在异常
Hadoop HA集群的一些默认配置或误改的参数,可能会触发自动任务:
- 打开
yarn-site.xml,检查yarn.nodemanager.aux-services配置项,有没有多余的辅助服务被启用(比如某些非必要的监控、数据同步服务) - 确认ResourceManager的调度器配置(
yarn.resourcemanager.scheduler.class)是否正确,有没有错误的队列配置导致自动提交任务 - 检查集群的启动脚本(比如
start-dfs.sh、start-yarn.sh或者你自定义的启动脚本),有没有附带执行提交YARN应用的命令
三、强制开启日志收集,解决无日志的核心问题
没有日志就没法深入调试,先把日志功能拉起来:
- 修改
yarn-site.xml,确保以下配置正确(如果不存在就新增):<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> <!-- 日志保留1天,可根据需求调整时长 --> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/tmp/logs</value> <!-- 日志存储的HDFS路径,要确保该路径权限正常 --> </property> - 保存配置后重启YARN服务:
stop-yarn.sh && start-yarn.sh - 之后再执行
yarn logs -applicationId <你的Application-Id>,应该就能拉取到应用的日志信息了,这时候就能看到应用启动的具体原因和可能的报错
四、排查定时任务与第三方服务
有时候自动启动的应用可能来自外部触发:
- 登录集群的每个节点,执行
crontab -l查看有没有定时提交YARN应用的任务 - 如果你用了Ambari、Cloudera Manager这类集群管理工具,检查工具里有没有自动触发的任务配置
- 查看HDFS上有没有被定期执行的作业脚本(比如MapReduce、Spark任务脚本),比如放在某个被监控的目录下
五、排查HA集群的切换异常
因为是HA集群,还要考虑Active/Standby切换时的异常:
- 查看ZooKeeper的日志,确认ResourceManager切换过程中有没有异常记录
- 检查JournalNode的日志,确保NameNode的状态同步正常,有没有因为HA同步问题导致YARN服务异常触发任务
如果按上面的步骤还是没解决,等拿到日志后可以把关键片段贴出来,咱们再针对性分析~
内容的提问来源于stack exchange,提问作者himanshu.k




