2025年yarn 查看日志(yarn查看历史任务列表)

yarn 查看日志(yarn查看历史任务列表)Yarn 作业运行的过程中 container 运行在各个 nodemanager 上面 会将作业中产生的日志归档在其运行的 nodemanager 节点的指定路径下 通过配置项 yarn nodemanager log dirs 进行配置 华为云 MRS 服务中 默认的路径为 srv Bigdata hadoop data1 nm containerlog 中 如果开启了日志归集特性 那么在作业结束之后

大家好,我是讯享网,很高兴认识大家。



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,已经配置为:(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,则会等待任务执行完还会聚合

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

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

hh.PNG
讯享网h.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日志回传,线下分析。

小讯
上一篇 2025-06-13 14:57
下一篇 2025-05-11 18:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179933.html