YARN——日志聚合

【简介】

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

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

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

【相关配置详解】

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

yarn.log-aggregation-enable

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

yarn.nodemanager.remote-app-log-dir

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

yarn.nodemanager.remote-app-log-dir-suffix

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

${yarn.nodemanager.remote-app-log-dir}/${user}/${yarn.nodemanager.remote-app-log-dir-suffix}

默认值为logs

yarn.log-aggregation.retain-seconds

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

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

yarn.log-aggregation.retain-check-interval-seconds

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

yarn.nodemanager.local-dirs

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

yarn.nodemanager.log-dirs

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

yarn.nodemanager.log.retain-seconds

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

yarn.nodemanager.delete.debug-delay-sec

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

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

yarn.log-aggregation-status.time-out.ms

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

yarn.nodemanager.logaggregation.threadpool-size-max

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

yarn.nodemanager.log-aggregation.compression-type

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

yarn.nodemanager.log-aggregation.num-log-files-per-app

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

yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds

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

yarn.nodemanager.log-aggregation.policy.class

日志聚合的策略

默认值为

org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy

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

可选的其他值包括:

org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AMOnlyLogAggregationPolicy

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

org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AMOrFailedContainerLogAggregationPolicy

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

【总结】

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值