YARN——日志聚合
Posted hncscwc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的日志。
以上是关于YARN——日志聚合的主要内容,如果未能解决你的问题,请参考以下文章