前阶段发生过两次JTCDH4.2.0 OOM的问题,导致ETL过程出错;由于是刚接手的集群参数大多是默认的,修改了JTJVM参数相关的CMS,同时减小了retireJobintervalcachesize看看是否奏效.发现过了三天又开始报警了,查看监控看到Old gen一直在涨根本释放不掉,估计是memory leak,做个内存dump分析吧(10GBheap size),做了两次dump发现FileSystem$Cache部分一直在涨:

103638996.png

Google了一下果然找到了相关的Bughttps://issues.apache.org/jira/browse/MAPREDUCE-5351;解决方案主要:

1.监控JT,符合一定阈值重启

2.修改如下参数,并写脚本手动清理job file

<property>

<name>keep.failed.task.files</name>

<value>true</value>

</property>


<property>

<name>keep.task.files.pattern</name>

<value>buhuibeipipeidaodezhengzebiaodashi</value>

</property>

不过方法2kerboros环境下有个bug: https://issues.apache.org/jira/browse/MAPREDUCE-5047,最终采取了方案1