何为聚合日志

将提交到Yarn的应用的日志,从各个NodeManager统一聚合到HDFS上。

为何需要聚合日志

Yarn是个分布式系统,日志会打印到很多不同的NodeManager上,不容易维护和查看。所以需要聚合功能。

聚合日志的具体使用

如果Yarn开启了日志聚合(yarn.log-aggregation-enable设置true)会在应用提交后创建目录,并在应用结束后将分散在各个NM上的应用日志聚合到HDFS。HDFS目录权限770。

  1. yarn logs -applicationId ${app_id}

配置

  • yarn.log-aggregation-enable: true,配置启用。
  • yarn.log-aggregation.retain-seconds: 保留时间,默认-1。
  • yarn.log-aggregation.retain-check-interval-seconds:多久检查日志,满足超时条件则删除日志。如果是0或-1则检查时间是保留时间的十分之一,默认-1。
  • yarn.nodemanager.remote-app-log-dir:程序运行结束日志发送到HDFS的目录。/tmp/logs
  • yarn.nodemanager.remote-app-log-dir-suffix:logs
  • yarn.nodemanager.log-dirs:容器运行日志。${yarn.log.dir}/userlogs。其中${yarn.log.dir}是yarn_env.sh中的环境变量YARN_LOG_DIR——默认是YARN_HOME/logs。也就是聚合前的本地日志在${YARN_HOME}/logs/userlogs

查看日志

HDFS具体路径

${remoteRootLogDir}/${user}/${suffix}/${application_id}
例如:/tmp/logs/root/logs/application_1570379089091_0027