背景: 最近经常有用户反馈 nm的日志聚合慢,导致在任务运行完后不能立即看到日志信息。特别是在任务报错的时候不能立即发现问题,体验不好。
目前我们集群的nm日志聚合相关主要的参数大致如下:
yarn.log-aggregation-enable :true
yarn.log-aggregation.retain-seconds :259200 (3天)保存聚合的日志时间
yarn.nodemanager.log-aggregation.compression-type :gz 压缩格式 (+ TFile)
yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds :-1 决定什么时候上传日志,如果-1 则为任务执行完才上传
yarn.nodemanager.log-aggregation.num-log-files-per-app :30 默认,目前 没有开启上面的滚动参数,不生效
yarn.nodemanager.log.retain-seconds :10800 默认,目前开启 日志聚合,不生效
yarn.nodemanager.remote-app-log-dir :/app-logs ,hdfs上的目标聚合目录
nm的日志聚合流程相对比较简单,结合上述参数大致为:
1、在初始化服务LogAggregationService 时 会创建一个 Fixed 线程池,线程池大小为 yarn.nodemanager.logaggregation.threadpool-size-max ,默认 100。
2、LogAggreg