背景: 最近经常有用户反馈 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上的目标聚合目录
<

针对用户反馈的Yarn NodeManager日志聚合慢的问题,文章详细描述了日志聚合流程、排查过程及优化思路。通过分析发现,线程池资源限制是主要瓶颈。尝试增大线程池大小并未解决问题,但修改日志聚合逻辑,仅在应用结束时放入任务到线程池,显著改善了性能,95分位的聚合时间降至210ms。然而,部分app因需上传大量container日志导致延迟,可能存在HDFS写入性能问题。
订阅专栏 解锁全文
1649

被折叠的 条评论
为什么被折叠?



