广告产品技术部有一个作业总是卡在某个reduce上,运行了好几个小时也运行不完,经过他们初步排查找不着问题原因,发邮件让我帮看看,我看了一下这个streaming作业是用python实现的,而且听他们描述,3月17之前该作业是没问题的,以下是可能存在问题的地方:
1、集群节点有问题
2、作业的配置参数不对,导致reduce运行有问题
3、数据问题
那就一一来排查这些问题吧。
第一点,我看了一下被卡住reduce运行的节点,NodeManager日志正常,dmesg日志正常,负载和内存使用都很正常,排查了集群问题的可能性。
第二点,我找到了被卡住reduce正在运行的java进程,通过jstat -gcutil $pid 和top -p $pid查看内存和cpu使用情况都很正常,堆内存是够用的,很长时间才出现一次FGC,不是内存的问题,看cpu使用情况,才0.3%的使用,严重正常,看来根本不是cpu的问题。
第三点,我看了一下reduce的日志,reduce任务已经完成了copy和merge,是在进行数据处理的时候出现被卡住的&