Hadoop/Yarn的日志清理

Hadoop/Yarn的日志清理可以分为两个子话题讨论:

  • Hadoop/Yarn的本地日志(非Yarn Container生成的日志)
  • Yarn的Container生成的日志

我们这里讨论的日志清理并不是通过定时的日志删除命令去实现,这一做法显然优雅, 具体的做法下面会分别进行讨论。

1. Hadoop/Yarn本地日志的清理

Hadoop/Yarn使用log4j进行日志输出,所以对于它们本地日志的清理,最好的方式是通过修改log4j的配置配置文件,以rolling的方式写入日志。Hadoop/Yarn的log4j配置文件一般会放置于/etc/hadoop/etc/hadoop/conf下,确切的位置与你使用的Hadoop发行版有关,请自行查找并确认。

很多的Hadoop的发行版(例如EMR)对于Hadoop/Yarn的本地日志使用DailyRollingFileAppender,这意味着日志将永远不会被自动清理,如果担心日志文件过多挤占磁盘空间的话,可以考虑将DailyRollingFileAppender改为RollingFileAppender, 具体做法是:

针对集群所有节点上的log4j.properties文件做如下修改:

  • 使用RollingFileAppender替换DailyRollingFileAppender
  • 设定单个log文件的大小 (MaxFileSize)
  • 设定最多log文件数(MaxBackupIndex)

通过这样的设置,当日志超过指定的og文件数后,会自动覆盖最早期的日志,不再需要手动删除日志。

覆盖之后,只有重启Hadoop相关服务配置才会生效,但是在重启前建议将现有日志备份到其他位置,备份好之后再删除现有日志:

sudo rm -rf /var/log/hadoop-hdfs/* /var/log/hadoop-mapreduce/* /var/log/hadoop-yarn/*

具体的日志位置可能会因不同的发行版而不同,但一版都会位于/var/log/下。同样的,该操作需要在集群所有节点上执行。

清空日志之后就可以重启Hadoop相关服务了,执行前请确保没有集群目前处于空闲状态,没有任务正在执行!

重启完成之后,执行一些作业,等待一段时间之后,可以进入各个节点的/var/log/hadoop-yarn和/var/log/hadoop-hdfs下查看一下日志文件体积和数量,确保修改已生效。

2. Yarn的Container日志

作为一种分布式系统,Yarn上应用会以容器(Container)形式运行,其在运行期间产生的日志也是先写在容器对应物理节点的某个本地目录下。由于日志是分布式存储的,所以不便查看,因此,默认情况下,Yarn都会开启日志聚合功能,将各节点的本地日志聚合之后,存放于HDFS上。控制这一功能的配置项是yarn.log-aggregation-enable,该项通常会被设为true,即启动日志聚合。

在开启了日志聚合的情况下,Yarn对日志的处理是这样的:容器内日志会先写入worker节点的本地目录下,当作业执行结束后,会将所有节点的日志聚合,存放于hdfs上的某个目录下,同时删除本地节点的日志文件。而hdfs上的目录也有一个保留时间,超过这个时间日志会被自动清除。

所以对于容器内产生的日志,默认是不需要关注日志越积累越多的问题。控制hdfs上聚合日志保存时长的配置项是yarn.log-aggregation.retain-seconds

最后,作为一个备忘,我们将日志聚合的几个参数汇总一下,它们都在yarn-site.xml中配置,需要注意的是,在不同的发行版中,它们的默认值都是不尽相同的

  • yarn.log-aggregation-enable

参数解释:是否启用日志聚集功能,开源Hadoop版的默认值:false

  • yarn.log-aggregation.retain-seconds

参数解释:在HDFS上聚集的日志最多保存多长时间。开源Hadoop版的默认值:-1

  • yarn.log-aggregation.retain-check-interval-seconds

参数解释:多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10。开源Hadoop版的默认值:-1

  • yarn.nodemanager.remote-app-log-dir

参数解释:当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。开源Hadoop版的默认值:/tmp/logs

Yarn聚合后的日志可通过ResourceManger页面直接查看。


关于作者:耿立超,架构师,14年IT系统开发和架构经验,对大数据、企业级应用架构、SaaS、分布式存储和领域驱动设计有丰富的实践经验,热衷函数式编程。目前负责企业数据中台的架构设计和开发工作,对Hadoop/Spark 生态系统有深入和广泛的了解,参与过Hadoop商业发行版的开发,曾带领团队建设过数个完备的企业数据平台,个人技术博客:https://laurence.blog.csdn.net/ 作者著有《大数据平台架构与原型实现:数据中台建设实战》一书,该书已在京东和当当上线:

京东购书链接:https://item.jd.com/12677623.html
当当购书链接:http://product.dangdang.com/28974965.html

扫描图中二维码了解详情↓↓

在这里插入图片描述

bluishglc CSDN认证博客专家 CSDN博客专家
架构师,CSDN博客专家,14年IT系统开发和架构经验,对大数据、企业级应用架构、SaaS、分布式存储和领域驱动设计有丰富的实践经验。对Hadoop/Spark 生态系统有深入和广泛的研究,参与过Hadoop商业发行版的开发,目前负责企业数据中台的架构设计和开发工作,热衷函数式编程,著有《大数据平台架构与原型实现:数据中台建设实战》https://item.jd.com/12677623.html 一书。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页