美文网首页
一次spark性能问题的解决过程

一次spark性能问题的解决过程

作者: maige | 来源:发表于2018-01-16 23:47 被阅读0次

    背景

    某局点上线新版本后,实时标注(spark streaming任务)运行一个小时后,任务卡死。
    具体情况:实时数据量10w/s, 任务配置 executor 60个, 内存10g,到一个小时任务开始积压

    定位过程

    1. 对比任务和之前版本的配置,变化不大,理论上不应该是配置导致积压
    2. 初步怀疑新加的字符串替换方法影响性能,经过构造数据测试发现非瓶颈
    3. 每次都到一个小时就开始积压,怀疑是full GC导致,gc日志显示spark确实每隔一段时间会人为调用System.gc,但是full GC的时间较短,仅为300ms左右
    4. 准备到executor节点打jstack,平时没多留意,yarn前台可以看到每个节点的thread dump(可以多次进入查看,搜索main或者com.xxx),较多executor节点线程出现在某个读取hdfs文件的方法(这部分代码为新增逻辑),这个方法刚好一个小时调度一次,由于executor较多,同时读取name node压力太大,导致瞬间卡顿,删除,一切正常了。

    相关文章

      网友评论

          本文标题:一次spark性能问题的解决过程

          本文链接:https://www.haomeiwen.com/subject/kizeoxtx.html