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

背景

某局点上线新版本后,实时标注(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压力太大,导致瞬间卡顿,删除,一切正常了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。