背景:
波动分析诊断逻辑 运行在 mapreduce任务上,任务耗时执行变长,偶发失败,经常不稳定。
排查思路:
- 查阅资料。一个reduce任务 运行耗时超过10分钟,会重试重跑,一段时间后redunce节点一直没有发心跳给master。集群会自动把他kill掉,导致整体失败
- dump数据到 本地 排查为什么reduce节点这么慢,开始怀疑是代码原因,debug
- 采用 JVM Mission Control,定位方法执行耗时
- 发现 打印树的方法 耗时占了最长时间。
- 原来是 为了 排查问题 打印的,完全可以去掉。。
- 去掉后 10w量级的数据,秒速执行完成
总结
- 一开始总是怀疑是 mr任务本身资源紧张之类的问题。想在mr 参数上做优化,无果
- 想不清楚 该子任务 和 其他子任务的区别在哪里(最近30天指标 执行不成功,最近7天指标 执行成功)
- 还是要往 自己代码的问题上找原因,平台本身一般不会有问题
- 不要畏惧,不熟悉的东西也可以尝试去排查,技术排查 是 依赖经验的。经验多,遇到新问题也快。