Hadoop 历史服务器获取作业运行信息

来源:互联网 发布:搜狗排名优化软件 编辑:程序博客网 时间:2024/06/13 10:04

本文部分资料转自博客 Hadoop 历史服务器与日志详解

Hadoop 历史服务器

MapReduce 的 JobHistory Server,这是一个独立的服务,可通过 web UI 展示历史作业日志,之所以将其独立出来,是为了减轻 ResourceManager 负担。JobHistory Server 将会分析作业运行日志,并展示作业的启动时间、结束时间、各个任务的运行时间,各种Counter数据等,并产生一个指向作业和任务日志的链接,其默认端口号为 19888。通常可以启动在一台独立的机器上。

当我们成功的完成了一个Hadoop Job的时候,在某个时刻我们想查看这次Job运行的相关的信息,那么我们就可以通过Hadoop JobHistory Server来进行查看,每次运行完成的Job会在设置的”mapreduce.jobhistory.done-dir” 值的目录下面产生两个文件,一个是以.jhist结尾的文件,另一个是.xml结尾的文件,.jhist结尾的文件里面的信息主要是给Web端来进行使用过的。而xml文件中,就是这次job的所有配置参数的信息,比如我们可以在这个文件中查找输入和输出路径。下面的图片是.jhist和.xml文件样例图片:
title

xml文件中的数据大致样例:
title

历史服务器配置

要使用历史服务器,你首先需要配置相应的参数的信息,然后要启动历史服务器,你需在 mapred-site.xml 中对其进行配置

<property><name>mapreduce.jobhistory.address</name><value>0.0.0.0:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>0.0.0.0:19888</value></property>

上面的参数是在 mapred-site.xml 文件中进行配置,mapreduce.jobhistory.address 和 mapreduce.jobhistory.webapp.address 默认的值分别是 0.0.0.0:10020 和 0.0.0.0:19888,大家可以一定要根据自己的情况进行相应的配置,最好别用默认的 0.0.0.0 ,参数的格式是 host:port。

在 Hadoop 历史服务器的 WEB UI 上最多显示 20000 个历史的作业记录信息;其实我们可以在 mapred-site.xml 文件中通过下面的参数进行配置,然后重启一下 Hadoop jobhistory 即可。

<property>    <name>mapreduce.jobhistory.joblist.cache.size</name>    <value>20000</value></property>

启动历史服务器

配置完上述的参数之后,重新启动 Hadoop jobhistory,这样我们就可以在 mapreduce.jobhistory.webapp.address 参数配置的主机上对 Hadoop 历史作业情况经行查看。

只能在 mapred-site.xml 文件中 mapreduce.jobhistory.webapp.address 配置参数所指定的那台机器上执行:

sbin/mr-jobhistory-daemon.sh start jobhistoryserver

作业运行日志配置

历史作业的记录里面包含了一个作业用了多少个 Map、用了多少个 Reduce、作业提交时间、作业启动时间、作业完成时间等信息;这些信息对分析作业是很有帮助的,我们可以通过这些历史作业记录得到每天有多少个作业运行成功、有多少个作业运行失败、每个队列作业运行了多少个作业等很有用的信息。这些历史作业的信息是通过下面的信息配置的:

在 mapred-site.xml 文件中进行配置:

<property>    <name>mapreduce.jobhistory.done-dir</name>    <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value></property><property>    <name>mapreduce.jobhistory.intermediate-done-dir</name>    <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value></property><property>    <name>yarn.app.mapreduce.am.staging-dir</name>    <value>/tmp/hadoop-yarn/staging</value></property>

作业运行日志产生过程

  • 启动作业的 ApplicationMaster 并写日志至 HDFS

  • ResourceManager 启动作业的 ApplicationMaster

  • ApplicationMaster 运行过程中,将日志写到 ${yarn.app.mapreduce.am.staging-dir}/yarn/.staging/job_XXXXX_XXX/ 下
  • 参数 yarn.app.mapreduce.am.staging-dir 的默认值是 /tmp/hadoop-yarn/staging
  • 该目录下将存在3个文件,分别是以 “.jhist“、”.summary” 和 “.xml” 结尾的文件,分别表示作业运行日志、作业概要信息和作业配置属性,其中,作业概要信息只有一句话,举例如下:
jobId=job_1385051297072_0002,submitTime=1385393834983,launchTime=1385393974505,firstMapTaskLaunchTime=1385393976706,firstReduceTaskLaunchTime=1385393982581,finishTime=1385393985417,resourcesPerMap=1024,resourcesPerReduce=1024,numMaps=8,numReduces=1,user=yarn,queue=default,status=SUCCEEDED,mapSlotSeconds=47,reduceSlotSeconds=5,jobName=QuasiMonteCarlo

HDFS 内转移历史运行日志

  • 所有任务运行完成后,意味着,该作业运行完成
  • 此时ApplicationMaster 将三个文件拷贝到 mapreduce.jobhistory.intermediatedonedir/{username} 目录下,拷贝后的文件名后面添加 “_tmp”
  • 其中 mapreduce.jobhistory.intermediate-done-dir 默认值是 ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
  • ApplicationMaster 将拷贝完成的三个文件重新命名成 “.jhist”、”.summary” 和 “.xml” 结尾的文件(去掉 “_tmp”)

周期转移 done_intermediate 中的日志文件到 done 目录

  • 周期性扫描线程定期将 done_intermediate 的日志文件转移到 done 目录
  • 通过参数 mapreduce.jobhistory.done-dir 配置,默认值为 ${yarn.app.mapreduce.am.staging-dir}/history/done)下
  • 同时删除 “.summary” 文件(该文件中的信息,.jhist 文件中都有)
  • ApplicationMaster 移除 ${yarn.app.mapreduce.am.staging-dir}/yarn/.staging/job_XXXXX_XXX/ 目录
0 0
原创粉丝点击