一、问题发现
2019-05-07 XXX 告知 XXX 集群作业跑的很慢,提供作业 ID 为:application_1523379785773_150848
问题排查
作业查看
作业的 MAP 端执行了大概 7 个小时,确实不应该
定位任务进程
查看 map 所在机器的监控,发现系统负载急剧上升
进入 map 任务所在的服务器,找到进程信息
19271 进程确实 CPU 负载很高,TOP 命令
查看 JVM 进程 GC
查看此进程的堆栈信息,发现 full gc 次数很多,时长很长大概 6 个小时,频繁的 full gc 会使 cpu 使用率过高。
查看job进程详情发现,java heap内存只有820M,task处理的记录数为7400多万,造成堆内存不足频繁出发 full gc.
参数优化
set mapreduce.map.memory.mb=4096;
set mapreduce.map.java.opts=-Xmx3686m;
set mapreduce.reduce.memory.mb=4096;
set mapreduce.reduce.java.opts=-Xmx3686m;