干货 | YARN 应用日志相关参数解析及如何使用命令行查看应用日志

本文介绍YARN的日志管理系统,包括本地Container日志与聚合日志的区别,以及如何配置相关参数实现日志聚合与清理。并通过查看Flink on Yarn日志的实际案例,指导读者如何定位并查看应用日志。

1570172a412736694c90fbc3ec871af2.gif

点击卡片“大数据实战演练”,选择“设为星标”或“置顶”

回复“资料”可领取独家整理的学习资料!

0d52a4af69a1fc18f4b9e21fb399d27c.png

yarn 相关文章:

 hadoop之yarn命令详解

 hadoop之yarn详解(基础架构篇)

版本:

yarn:2.6.0+cdh5.11.0

一、前言

对于从事大数据相关工作的朋友来说,在平时应该会跟 yarn 打过不少交道。像 MapReduce on yarn,Spark on yarn,Flink on yarn 等都是需要将应用运行在 yarn 上面的。但是对于应用运行日志的查看,yarn 却不像寻常服务那样方便,确实是有一些门槛的。而今天,我们就来好好梳理运行在 yarn 上面的应用日志相关参数及查看方式,最后以查看 Flink on yarn 日志示例。

二、作业本地日志

Container 日志包含 ApplicationMaster 日志和普通 Task 日志等信息,由配置 yarn.nodemanager.log-dirs 管理,这个是应用的本地(nodemanager节点)日志,在名为

由于作业在 Container 里面运行,应用会随机调度在某一 NodeManager 节点,假如 yarn.nodemanager.log-dirs 配置了多个路径。那么查看某应用日志,就比较繁琐了,你需要先确定 NodeManager 节点,然后找到日志路径,如果日志路径配置多的话,寻找日志比较困难。

三、日志聚合

为了解决以上痛点,yarn 为了方便用户,还支持开启日志聚合功能,设置 yarn.log-aggregation-enable 为 true ,默认为 false 。日志聚合是 yarn 提供的日志中央化管理功能,收集每个容器的日志并将这些日志移动到文件系统中,比如 HDFS 上,方便用户查看日志。

可能大部分朋友,都会通过执行 yarn logs -applicationId Container−Id的目录下有该Container生成的文件err、log和out文件。由于作业在Container里面运行,应用会随机调度在某一NodeManager节点,假如yarn.nodemanager.log−dirs配置了多个路径。那么查看某应用日志,就比较繁琐了,你需要先确定NodeManager节点,然后找到日志路径,如果日志路径配置多的话,寻找日志比较困难。¨K4K为了解决以上痛点,yarn为了方便用户,还支持开启日志聚合功能,设置∗∗yarn.log−aggregation−enable∗∗为true,默认为false。日志聚合是yarn提供的日志中央化管理功能,收集每个容器的日志并将这些日志移动到文件系统中,比如HDFS上,方便用户查看日志。可能大部分朋友,都会通过执行yarnlogs−applicationId{applicationId} 来查看应用日志。yarn logs -applicationId 命令查看的其实就是聚合后的应用日志,也就是 HDFS 上面的日志,日志目录可由 yarn-site.xml 文件参数配置:

  • yarn.nodemanager.remote-app-log-dir:日志聚合的地址,默认为 /tmp/logs

  • yarn.nodemanager.remote-app-log-dir-suffix:日志聚合的地址后缀,默认为 logs

结合上述两个参数,默认情况下,远程日志目录将在 /tmp/logs/211f5066dce140308ad9216fb9c089a6.png{user} 为 yarn 应用执行用户。

0013fbf93fc1d7d2d54964980e8e0d0a.png

日志聚合开启后,运行的应用日志是什么时候触发聚合操作呢?运行中还是结束后?我们继续往下看:

我们又找到了 yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds 配置,该配置表示:NodeManager 上传日志文件的频率。默认值为 -1。默认情况下,日志将在应用程序完成时上传。通过设置该配置,可以在应用程序运行时定期上传日志。可以设置的最小滚动间隔秒数为 3600。

yarn 更多配置参数可参考:https://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

四、日志清理

1、本地日志
  • yarn.nodemanager.log.retain-seconds: 保存在本地节点的日志的留存时间, 默认值是 10800,单位:秒,即 3 小时。当开启日志聚合功能后,该配置无效。

  • yarn.nodemanager.delete.debug-delay-sec:默认值为 0,表示在开启日志聚合功能的情况下,应用完成后,进行日志聚合,然后 NodeManager 的 DeletionService 立即删除应用的本地日志。如果想查看应用日志,可以将该属性值设置得足够大(例如,设置为 600 = 10 分钟)以允许查看这些日志。

  • yarn.nodemanager.delete.thread-count: NodeManager 用于日志清理的线程数,默认值为 4。

2、远程聚合日志
  • yarn.log-aggregation.retain-seconds: 在删除聚合日志之前保留聚合日志的时间。默认值是 -1,表示永久不删除日志。这意味着应用程序的日志聚合所占的空间会不断的增长,从而造成 HDFS 集群的资源过度使用。

  • yarn.log-aggregation.retain-check-interval-seconds: 聚合日志保存检查间隔时间,确定多长时间去检查一次聚合日志的留存情况以执行日志的删除。如果设置为 0 或者负值,那这个值就会用聚合日志保存时间的 1/10 来自动配置,默认值是 -1。

五、查看 Flink on Yarn 日志

现在以在 yarn 上查看 flink 应用日志为例,由于flink应用是实时运行的,所以如果不配置 yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds 的话,则不会将日志聚合到 HDFS 上,那就需要我们去查看 Container 日志。

1、yarn application -list

2ae192672f8731bdf3a466c6fa807b88.png

2、yarn applicationattempt -list <ApplicationId>

417e3349aab1ae259b3f795d24da8a26.png

3、yarn container -list <Application Attempt Id>

34854fc13e0779071f3b33622df1ce93.png

4、查看对应 Container 日志

上述列表中,Container 启动最早的那个编号是 jobmanager,其余的是 taskmanager 。根据 yarn 配置:yarn.nodemanager.log-dirs,路径为:/data/yarn/container-logs。

前往对应 Host 节点,查看 /data/yarn/container-logs/ed3d4dbf59a9574395a1d254777b5daf.png{Container-Id} 下面的容器日志。

  • jobmanager.log 为 flink任务管理日志。

  • taskmanager.log 为 flink任务工作日志。

当然,也有朋友会问,我在 yarn resourceManager UI 上面也可以看到应用日志啊。是的,能看到,但我还是感觉命令行简单,并且你也不能保证每个项目的 yarn 环境,都能访问外网是吧。

所以我上面分享的查到对应的 Container 日志命令,是很有必要掌握的。

六、总结

1、本篇文章,以 yarn 2.6.0 版本为例,主要讲解了 yarn 应用日志相关,分为本地 Container 日志和聚合日志。

2、接下来又讲解了 yarn 应用日志的相关参数,比如:日志存储目录、日志聚合相关参数、日志清理相关参数等

3、最后,就以查看 flink on yarn 日志为例,梳理了一下用 yarn 命令如何定位 Container 日志所在主机,如何用命令来查看日志。当然最后也建议大家,尽量学会以命令行的方式查看日志,因为不是每个项目环境的 yarn 都留有外网,而命令行则是我们程序员最后的倔强。

----------  END  ----------

往期推荐

hadoop之yarn命令详解

hadoop之yarn详解(基础架构篇)

Elasticsearch 平滑下线节点实践指南

我有好几种办法让你访问 github 速度起飞,不信进来看!

Ambari 前端之 ambari-web 模块概述

分享一下我对 ambari 二次开发的一些理解~

最后说一句(求关注,别白嫖我)

扫一扫,我们的故事就开始了。

99f444fbc64271fa2b3475ef687d8eae.png

文章有用,点赞、转发、在看都是一种支持,求三连

另外公众号改变了推送规则,大家看文章不要忘记点击最下方的在看,点赞按钮,这样微信自动识别为常看公众号,否则很可能推送的文章可能淹没在别的文章找不到,谢谢大家。

afce6e99f16f941e5e38d201a6131c3d.png

                   动动小手,让更多需要的人看到~

1982a2e28761db3e5e308caec5300e17.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

create17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值