YARN Timeline Server .out日志不滚动导致磁盘满的解决方案咨询
YARN Timeline Server .out日志无限制增长解决方案
默认情况下,YARN Timeline Server的.out文件为进程标准输出/错误的重定向文件,原生未内置滚动策略,会持续写入导致磁盘占用过高,可通过以下两种方案解决:
方案一:修改YARN启动脚本启用滚动(适配自研/开源原生Hadoop版本)
- 定位YARN启动脚本
yarn-daemon.sh,默认路径为$HADOOP_YARN_HOME/sbin/yarn-daemon.sh - 找到Timeline Server进程启动时的重定向逻辑,将默认的追加写入配置,替换为通过
rotatelogs工具实现滚动输出:- 若系统未安装
rotatelogs,可执行yum install httpd-tools(CentOS/RHEL)或apt install apache2-utils(Debian/Ubuntu)安装 - 按大小+数量限制滚动示例:将原重定向语句
>> $YARN_TIMELINESERVER_OUT_FILE 2>&1 < /dev/null修改为| rotatelogs -n 10 -s 100M $YARN_LOG_DIR/hadoop-yarn-timelineserver-%Y%m%d%H%M.out 2>&1 < /dev/null,其中-n 10表示最多保留10个历史文件,-s 100M表示单文件最大100M,达到阈值自动滚动
- 若系统未安装
- 修改完成后重启YARN Timeline Server服务即可生效
方案二:使用系统logrotate工具实现滚动(无需修改Hadoop原生配置,优先推荐)
该方案不修改Hadoop官方脚本,版本升级、发行版更新不会丢失配置,适配所有Hadoop版本及CDH/CDP等商业发行版:
- 新增logrotate配置文件
/etc/logrotate.d/yarn-timelineserver,写入如下配置:
/var/log/hadoop-yarn/hadoop-yarn-timelineserver-*.out { size 100M rotate 10 copytruncate missingok notifempty compress delaycompress }
- 配置说明:
size 100M:单.out文件大小达到100M时触发滚动,也可替换为daily按天滚动,两个条件可同时配置,满足任意一个即执行滚动rotate 10:最多保留10份历史日志,超过自动删除最旧的文件copytruncate:先复制当前日志内容到历史文件,再清空原.out文件,无需重启Timeline Server服务,不会中断进程日志写入compress:自动gzip压缩历史日志,可节省70%以上的磁盘空间
- 手动执行测试配置是否生效:
logrotate -f /etc/logrotate.d/yarn-timelineserver,执行后查看/var/log/hadoop-yarn路径下是否生成压缩后的历史.out文件即可
内容的提问来源于stack exchange,提问作者Ashutosh gupta
相关产品推荐
相关产品推荐

