Yarn无法查看日志: Aggregation may not be complete, Check back later or try the nodemanager at xxxx:xxxx

前言

最近这个新集群搭建完后,出现了很多问题,今天又出现了要给蛋疼的问题,执行了一个测试代码,想要通过yarn查看日志,可以用命令:

yarn logs -applicationId application__1576828612082_0004_000001

也可以直接再Web UI中点击查看:
在这里插入图片描述
本来很简单的操作,谁知道在这个集群就报错了

出现的问题

点击Web中的logs后直接跳转到如下一个页面:
在这里插入图片描述
使用命令后也同样报错:

Logs not available for container_1576828612082_0004_000001. Aggregation may not be complete, Check back later or try the nodemanager at slave13:8041
Or see application log at http://slave13:8041/node/application/1576828612082_0004_000001

从字面理解就是说:日志没有完成聚合,可还是搞不懂啥意思

查资料给出的解决方案

在yarn-site.xml在这个文件下面添加

<!--log-->
 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
 </property>
 <property>
        <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
        <value>3600</value>
 </property>
 <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/tmp/logs</value>
 </property>

yarn.log-aggregation-enable属性意思是: 是否启用日志聚合
我直接通过Yarn的WebUi查看,发现
默认就是勾选的,为true

在这里插入图片描述

yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds这个属性在Web Ui中根本就没有,大概意思就是:日志聚合监控间隔秒数
既然默认没有,我就先没有处理这个参数

yarn.nodemanager.remote-app-log-dir参数的意思是:应用程序结束时存储应用程序日志的 HDFS 目录。

查看WebUi后:
在这里插入图片描述
看到这个目录,我忽然意识到,本来默认路径就是/tmp/logs和logs,我之前根本不了解这个参数是什么,以为是本机的目录,感觉日志放在/tmp目录下有可能放不下(真是无知的让人汗颜),于是改到/data目录…
可这样就会出现上面的问题吗?先改回来,然后重启过期配置,发现竟然可以了。。。

于是赶紧查找了资料重新认识了一下有关Yarn logs方面的知识:

  1. MR运行过程中,日志将暂存于yarn.nodemanager.log-dirs配置项指定的本地路径下,默认为/var/log/hadoop-yarn/container;

  2. MR运行结束后(无论正常结束与否),将持久化日志到yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix配置项指定的HDFS路径下,前者默认为/tmp/logs,后者默认为logs。HDFS的实际路径为 y a r n . n o d e m a n a g e r . r e m o t e a p p l o g d i r / {yarn.nodemanager.remote-app-log-dir}/ {user}/ y a r n . n o d e m a n a g e r . r e m o t e a p p l o g d i r s u f f i x / {yarn.nodemanager.remote-app-log-dir-suffix}/ {application_id},例如:/tmp/logs/root/logs/application_1427333457223_0068;

  3. 日志持久化后,会删除本地的暂存日志;

  4. 在自定义的SortComparatorClass中定义的日志,将输出在map日志中;在自定义的GroupingComparatorClass中定义的日志,将输出在reduce日志中;在自定义WritableComparable中定义的日志,如果在map或者reduce中使用了该WritableComparable,将输出到对应的map或者reduce日志中;

  5. 不建议在MR中,尤其是线上环境下,生成太多的MR日志。否则,将极大的增加磁盘I/O负载。还有,即使MR任务已经完成,但是YARN还未完成从本地到HDFS的日志收集。此时访问日志时,可能还会出现提示"Logs not available for attempt_1427333457223_0072_m_000015_0. Aggregation may not be complete, Check back later or try the nodemanager at sjxt-hd04:8041";

  6. MR运行中,Map和shuffle的输出都将落在本地,路径由yarn.nodemanager.local-dirs配置项指定。

发布了237 篇原创文章 · 获赞 140 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/Android_xue/article/details/103634239