背景:
    波动分析诊断逻辑 运行在 mapreduce任务上,任务耗时执行变长,偶发失败,经常不稳定。

    排查思路:

    • 查阅资料。一个reduce任务 运行耗时超过10分钟,会重试重跑,一段时间后redunce节点一直没有发心跳给master。集群会自动把他kill掉,导致整体失败
    • dump数据到 本地 排查为什么reduce节点这么慢,开始怀疑是代码原因,debug
    • 采用 JVM Mission Control,定位方法执行耗时image.png
    • 发现 打印树的方法 耗时占了最长时间。 image.png
    • 原来是 为了 排查问题 打印的,完全可以去掉。。
    • 去掉后 10w量级的数据,秒速执行完成

    总结

    • 一开始总是怀疑是 mr任务本身资源紧张之类的问题。想在mr 参数上做优化,无果
    • 想不清楚 该子任务 和 其他子任务的区别在哪里(最近30天指标 执行不成功,最近7天指标 执行成功)
    • 还是要往 自己代码的问题上找原因,平台本身一般不会有问题
    • 不要畏惧,不熟悉的东西也可以尝试去排查,技术排查 是 依赖经验的。经验多,遇到新问题也快。