前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YARN——日志聚合

YARN——日志聚合

作者头像
陈猿解码
发布2023-02-28 14:30:13
5580
发布2023-02-28 14:30:13
举报
文章被收录于专栏:陈猿解码

【简介】

在yarn架构中,application由一个个的container组成,每个container可运行在不同的nodemanager节点上,每个container的日志存储在container所运行的nodemanger节点上,这些日志会有一定的生命周期,超过指定时间后,日志会被删除。

由于日志存放在nodemanager节点的本地文件系统中,在jobhistoryserver中无法访问到这些日志,只能登录到nodemanager节点上进行查看,因此这样的方式使用起来并不方便,尤其是一个application有多个container,container分布在多个nodemanager上运行,有问题要排查时需要分别到不同的nodemanager上进行查看。

日志聚合功能可以很好的解决这个问题,启用日志聚合功能后,nodemanager会自动将container运行的日志上传到HDFS上。这样不管是通过HDFS的web界面还是通过jobhistoryserver的web界面都能很方便的查看到application的所有运行日志。

【相关配置详解】

日志聚合功能有如下相关的配置项:

代码语言:javascript
复制
yarn.log-aggregation-enable

是否启用日志聚合功能,默认值为false,即不启用日志聚合功能

代码语言:javascript
复制
yarn.nodemanager.remote-app-log-dir

日志聚合后在HDFS上存储的目录位置,在该目录下会按application所属的用户名创建目录。默认值为/tmp/logs

代码语言:javascript
复制
yarn.nodemanager.remote-app-log-dir-suffix

在上面提到的用户名目录下,还会创建指定目录前缀,因此结合上面的配置项,container的日志最终的存储目录为:

代码语言:javascript
复制
${yarn.nodemanager.remote-app-log-dir}/${user}/${yarn.nodemanager.remote-app-log-dir-suffix}

默认值为logs

代码语言:javascript
复制
yarn.log-aggregation.retain-seconds

聚合后的日志在HDFS上的存储生命周期,超过该时间后日志会被删除。默认值为-1,表示永久存储

注意:日志聚合是由nodemanager完成的,而日志的删除是由jobhistoryserver负责完成的。

代码语言:javascript
复制
yarn.log-aggregation.retain-check-interval-seconds

日志清除的检测周期,即每隔一段时间检查相关目录下是否有过期的日志,如果有则进行删除。

代码语言:javascript
复制
yarn.nodemanager.local-dirs

container运行的中间数据的存储目录

代码语言:javascript
复制
yarn.nodemanager.log-dirs

application运行日志在nodemanager本地文件系统上的存放目录

代码语言:javascript
复制
yarn.nodemanager.log.retain-seconds

未开启日志聚合的情况下,application运行日志在nodemanager节点本地文件系统上存储的生命周期

代码语言:javascript
复制
yarn.nodemanager.delete.debug-delay-sec

默认值为0, 表示开启日志聚合功能的情况下,当application运行结束后,进行日志聚合,然后立马在nodemanger节点上进行删除。

为了方便问题排查,可以设置大于0的数字,即延迟指定时间后再删除。

代码语言:javascript
复制
yarn.log-aggregation-status.time-out.ms

resourcemanager等待日志聚合状态汇报的超时时间。

代码语言:javascript
复制
yarn.nodemanager.logaggregation.threadpool-size-max

nodemanager中用于日志聚合的线程池的最大个数

代码语言:javascript
复制
yarn.nodemanager.log-aggregation.compression-type

日志聚合文件的压缩类型,默认为空,即不进行压缩

代码语言:javascript
复制
yarn.nodemanager.log-aggregation.num-log-files-per-app

每个application进行聚合的日志的最大个数

代码语言:javascript
复制
yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds

nodemanager进行日志聚合的时间间隔,默认值-1表示当application运行结束后立即进行日志聚合。设置大于0的值表示进行日志聚合的线程会周期性的被唤醒以进行日志的聚合。

代码语言:javascript
复制
yarn.nodemanager.log-aggregation.policy.class

日志聚合的策略

默认值为

代码语言:javascript
复制
org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy

即application的所有container的日志都会被聚合

可选的其他值包括:

代码语言:javascript
复制
org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AMOnlyLogAggregationPolicy

即只有类型为application master的rontainer的日志会被聚合

代码语言:javascript
复制
org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AMOrFailedContainerLogAggregationPolicy

即类型为application master的container的日志和运行失败的container的日志会被聚合,其他的则不进行聚合

【总结】

文件主要整理了yarn中日志聚合功能的相关配置项。除了正常配置好日志聚合,你可能还需要进行其他相关的配置才能更好的使用日志聚合功能,比如在resourcemanager中设置日志的url,这样可以方便的从resourcemanager的web界面中跳转到jobhistoryserver中查看application的日志。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈猿解码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档