You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.shstart-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

火山引擎 最新活动