最近楼主在运维hadoop集群时,发现无法打开jobhistory的页面,这导致查找作业运行失败的原因时会相当的蛋疼。楼主对照着各路大神的帖子,反复对比关于jobhistory的各个配置参数,觉着都没有什么问题。
逐步定位问题:
一、查看jobhistory的进程是否是以hadoop的超级用户启动:
进程活着,是以hadoop的超级用户启动的。
二、查看jobhistory的日志:
在./logs/*history*.log文件中发现各个作业的记录都在hdfs的./history/done_intermediate目录下,jobhistory进程将./history/done_intermediate的内容移动到./history/done时失败了。
又是一顿原因查找,楼主比较粗心,一直没有找到,只能去求助他人,经过与其他集群的配置一番对比之后发现,在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>
这里的路径使用了相对路径,但是${yarn.app.mapreduce.am.staging-dir}是在yarn-site.xml中定义的,所以这个配置失败了,修改成绝对路径(或者将yarn.app.mapreduce.am.staging-dir配置在mapred-site.xml中加入)后,重启jobhistory进程,搞定。
感触:再一次验证了yarn-stie.xml和maprep-site.xml是不共用一套配置信息的;其次,集群配置修改也是一个大胆假设,小心求证的过程。