【Hadoop】【Yarn】查看Yarn作业日志的方法

举报
沙漠里的果果酱 发表于 2021/05/28 18:01:22 2021/05/28
【摘要】 【Yarn日志归档流程】Yarn作业运行的过程中,container运行在各个nodemanager上面,会将作业中产生的日志归档在其运行的nodemanager节点的指定路径下。通过配置项:yarn.nodemanager.log-dirs进行配置。华为云MRS服务中,默认的路径为/srv/Bigdata/hadoop/data1/nm/containerlogs中。如果开启了日志归集特性...

【Yarn日志归档流程】

Yarn作业运行的过程中,container运行在各个nodemanager上面,会将作业中产生的日志归档在其运行的nodemanager节点的指定路径下。

通过配置项:yarn.nodemanager.log-dirs进行配置。华为云MRS服务中,默认的路径为/srv/Bigdata/hadoop/data1/nm/containerlogs中。

如果开启了日志归集特性,那么在作业结束之后,nodemanager会将container的日志上传到hdfs的指定路径上面。路径通过参数:yarn.nodemanager.remote-app-log-dir配置,默认路径为/tmp/logs/{USER}/logs.

日志聚合相关参数
1) yarn.log-aggregation-enable
 
    是否开启日志聚合功能

2) yarn.log-aggregation.retain-seconds
 
    hdfs上的日志保留多久。默认为15天。

    FI默认的归档路径配置路径为:/tmp/logs/${user}/logs

3) yarn.log-aggregation.retain-check-interval-seconds
 
    多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10,已经配置为:1296000(15天)

4) yarn.nodemanager.remote-app-log-dir
 
    前缀目录:/tmp/logs

5) yarn.nodemanager.remote-app-log-dir-suffix
 
    后缀目录:logs

6) yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds
 
    每隔一段时间进行日志的聚合,当前配置为:3600。如果配置为-1,则会等待任务执行完还会聚合

【MapReduce类型作业的历史作业归档】

上面介绍了Yarn的日志生成和归档过程,nodemanager虽然将container的日志归档在了HDFS上面,但是看起很不方便。

那么针对不同类型作业的历史日志查看服务应运而生,例如Spark作业和Mapreduce作业都有自己的JobHistoryServer。对于一些作业,如果没有实现自己的JobHistoryServer,那么就不能向Spark作业和Mapreduce作业那样,通过页面这种比较直观的方式来查看历史作业的详细task日志信息。如下图所示:


hh.PNGh.PNG

而对于mapreduce类型的作业,可以在yarn原生页面入口进入JobHistoryServer的页面,直接查看历史作业的日志。


JobHistoryServer要使用的日志其实分为两个部分:1-Job的日志和配置文件,即jobxxx.jhs和job.xml;2-yarn的归档日志;

MRAppMaster中记录的运行当中的作业的日志在yarn.app.mapreduce.am.staing.dir.(hdfs:/tmp/hadoop-yarn/staging/history下面),主要用于AM日志查看以及AM挂掉重试任务恢复的依据。通过参数am.staging控制。对于完成的job信息会放到/mr-history/tmp目录下面。

JobhistoryServer服务会持续监控该目录/mr-history/tmp,如果有新完成的作业日志加入,就会将其mv到/mr-history/done目录下面。

JobHistoryServer页面上读取的job信息也是已/mr-history/done目录中的为准,但是这个目录中仅仅有job.jhst文件和job.xml文件。

这两个文件仅仅是job的配置信息和基本的作业描述信息例如,有几个map 几个reduce,多少成功,多少失败等。但是没有具体的task日志。

具体的task日志依然使用的是nodemanager归档在hdfs上面的日志。只是jobhistoryserver将其进行解析,以比较友好的方式展示出来。

上面提到过,JobHistoryServer的作用仅仅是将运行完的job信息归档到了/mr-history/目录下面,即仅仅包含了作业的概要信息,至于每一个container的详细信息依然需要解析nodemanager归档的container日志信息获取。为了验证这种说法,我们尝试将某一个作业归档的container日志信息删除,然是依然保留/mr-history/的信息,然后查看这个job的历史信息,可以看到job的基本信息是可以看到的。

jobinfo.PNG

但是如果我们要继续查看该job中某一个task的具体信息,那么将会出现下面的页面:

taskinfo.PNG

因此从上面的过程中不难看出,jobhistoryServer其实也强依赖yarn中归档的日志,jhs'自己值保存了一个mapreduce job运行的基本信息(有多少map, reduce,有多少count,哪些成功,哪些失败等),但是具体的container日志还是依然yarn中归档的日志,如果yarn归档的日志由于过期(15天)或者由于误删除,那么jobhistoryserver就不能够看到历史作业的详细task信息了。

【如何查看作业日志】

上面介绍了Yarn的日志归档原理和mapreduce jobhistoryserver日志归档和显示的逻辑。

因此,从上面的介绍不难看出,我们可以通过两种种方式查看日志:

1-对于非主流计算框架的Yarn作业日志。

由于非主流的计算框架没有专门的JobHistoryServer去归档和展示历史信息,因此只能通过去nodemanager节点上(运行过程中)或者hdfs归档目录(运行结束)去查看container的日志。包括AM,因为AM本身也是一个container。

2-对于主流的计算框架,例如Mapreduce,Spark等,有自己的JobHistoryServer,可以直接在Yarn原生页面跳转到JobHistoryServer页面查看日志。当然,很多事有由于我们要定位现网问题,没有办法直接去连到客户网络去看jobhistoryserver页面,因此,还是需要将hdfs上面归档的container日志回传,线下分析。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。