背景
在Yarn上开启了日志聚合, 并设置了过期清除的时间, 但是没有生效, 导致在HDFS上聚合后的日志数据过大(/tmp/logs/hdfs/logs
), 造成磁盘空间不足
解决
前提: 配置了Jobhistory Server, 并处于启动中
方案1: 更改聚合日志的目录权限
Jobhistory Server使用的是mapred用户
hadoop fs chown -R mapred:supergroup /tmp/logs/hdfs
方案2: 更改角色操作的用户为hdfs
![](https://img.haomeiwen.com/i18249296/d73013e5710cc97b.png)
过程
![](https://img.haomeiwen.com/i18249296/222b5bce8c7e9d49.png)
原本怀疑是Flink的log4j的配置问题, 错误日志太多导致无法回滚(这个问题在低版本的logback有出现过), 事实验证并不是.
那么是否是Yarn运行中的application出现了异常, 而异常重启的次数配置的比较大, 导致不断启动新的container, 通过模拟的确会出现这个问题, 在Yarn NodeManager的/yarn/container-logs
可看到, 但是该文件会在application停止之后进行清除, 所以也可以暂时忽略这个问题
![](https://img.haomeiwen.com/i18249296/41031578cbc90955.png)
既然Yarn提供了这个清理的配置, 按理来说应该是支持的, 可能是使用的方式不对或者某个配置没开启, 探索一番一致, 清理日志的角色叫Jobhistory Server, 那么把添加角色后再启动应该就可以了
![](https://img.haomeiwen.com/i18249296/d11722edb47e1e06.png)
启动了之后, 发现还是没有对HDFS上的
/tmp/logs/hdfs/logs
进行清理, 查看Jobhistory Server的日志, 发现了操作该目录和权限相关的报错, 给目录授权后清理操作正常![](https://img.haomeiwen.com/i18249296/83e1020cb12e76ff.png)
网友评论