zoukankan      html  css  js  c++  java
  • Hadoop 2.0中的日志收集以及配置方法

    Hadoop中的日志包含三个部分,Application Master产生的运行日志和Container的日志。

    一、ApplicationMaster产生的作业运行日志

    Application Master产生的日志信息详细记录了Map Reduce job的启动时间,运行时间,用了多少个Mapper,多少个Reducer,Counter等等信息。MapReduce作业中的Application Master是运行在container中的。

    默认情况下,Application Master产生的日志信息保存在HDFS上的特定的路径下,由以下几个参数来决定。

    yarn.app.mapreduce.am.staging-dir : 默认为/tmp/hadoop-yarn/staging

    mapreduce.jobhistory.done-dir : 存放已经结束的MR job的日志,默认为${yarn.app.mapreduce.am.staging-dir}/history/done

    mapreduce.jobhistory.intermediate-done-dir : 存放正在运行中的MR job的日志,默认为${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate

    到达HDFS目录下查看后发现,每个MR job都包含两个文件,一个是.jobhist结尾的文件,一个conf.xml

    打开一个jhist查看,前半部分是avsc文件,描述了数据文件的结构,例如包含了什么字段,每个字段的数据类型以及possible value.

    后面的部分则是json格式的数据,描述了MapReduce Job的运行状态和日志信息。

    打开conf.xml可以发现,这个xml文件中包含了这个MapReduce job的参数。

    二、Container日志

     Container日志存放在每个NodeManager的本地磁盘上,存放位置由参数 yarn.nodemanager.log-dirs 决定,默认是$HADOOP_HOME/logs/userlogs下。这里包含了每一个application的log.

    每一个以application命名的文件夹下,包含三个container的文件夹,以0000001结尾的文件夹下的文件就是ApplicationMaster的运行日志。

    每个container文件夹下都包含三个文件,syserr,sysout, syslog

    三、日志聚集功能

     因为container的运行日志保存在每个NodeManager的本地磁盘下,不方便管理,可以启用日志聚集功能,打开该功能后,container的日志会被上传到HDFS某个目录下,并将syserr,sysout和syslog合并成一个文件,可以通过jobhistory server来查看,在没有启用日志聚集的功能时,在jobhistory server的Web UI里是没办法查看某个Map或者Reduce的日志的。

    并且用"yarn logs -applicationId xxxx" 命令尝试输出yarn的log,log是没办法显示的。

    在每个NodeManager的yarn-site.xml中配置以下参数。 

    1.yarn.log-aggregation-enable

    是否启用日志聚集功能,默认值为false

    2.yarn.log-aggregation.retain-seconds

    在HDFS上聚集的日志最多保存多长时间,默认值为-1,-1的意思是不删除?

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

    隔多长时间查看聚集的日志并删除已经超过时间的日志,默认值为-1。如果设置成0或者一个负数,则这个值会被计算成log保留时间的十分之一。

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

    日志被转移到的HDFS路径,默认值为/tmp/logs

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

    日志被转移到的HDFS路径的子目录,默认为logs, 所以默认情况下日志会被存放在${yarn.nodemanager.remote-app-log-dir}/${user}/logs下。

    其他参数可以参考https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

    接下来我们来验证一下,如果yarn.log-aggregation.retain-seconds设置成-1,也就是默认值,会不会进行日志聚集呢?

    此时我在ResourceManager和NodeManager的yarn-site.xml都加入了以下的参数。

    接下来重启yarn,并且跑一个MapReduce Job试试。

    此时我们可以在jobhistory server中查看到这个job的log.

    过十分钟左右再来查看,log还在,并且查看HDFS路径/tmp/logs/root/logs,所有的log文件都在此处。

    参考文章:

    https://blog.csdn.net/u011414200/article/details/50338073

  • 相关阅读:
    .NET 4.6.1 给cookie添加属性
    Blog目录
    1019 数字黑洞
    1018 锤子剪刀布
    1017 A除以B
    1016 部分A+B
    1015 德才论
    1014 福尔摩斯的约会
    1013 数素数
    1012 数字分类
  • 原文地址:https://www.cnblogs.com/qingfei1994/p/Hadoop.html
Copyright © 2011-2022 走看看