Spark-streaming stage夯住原因分析

Posted Q博士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-streaming stage夯住原因分析相关的知识,希望对你有一定的参考价值。

现象

任务执行中偶现stage停止不动

这里写图片描述

但是我们点进去查看任务的时候发现,任务状态是SUCCESSED的

这里写图片描述

查看日志发现有ERROR和WARN报出

17/03/28 10:56:19 ERROR LiveListenerBus: Dropping SparkListenerEvent because no remaining room in event queue. This likely means one of the SparkListeners is too slow and cannot keep up with the rate at which tasks are being started by the scheduler.

17/03/28 10:56:19 WARN LiveListenerBus: Dropped 1 SparkListenerEvents since Thu Jan 01 08:00:00 CST 1970

问题的原因

搜了一些关于消息队列的文章,在spark的jira中也查找到了相关的bug,确实在2.x版本的spark中存在因为LiveListenerBus消息队列的消息数量设置不当造成的bug,这个bug会影响webui中的展示,也会影响任务状态的判断。

终其原因是:当消息队列中的消息数超过其spark.scheduler.listenerbus.eventqueue.size设置的数量(如果没有设置,默认为10000)时,会将最新的消息移除,这些消息本来是通知任务运行状态的,由于你移除了,状态无法得到更新,所以会出现上面描述的现象

解决方式

在spark-submit中添加如下参数

--conf spark.scheduler.listenerbus.eventqueue.size=100000 

来观察一下问题是否解决了

经过6个小时的试运行,没再出现夯住的现象。说明该参数的确解决了问题

以上是关于Spark-streaming stage夯住原因分析的主要内容,如果未能解决你的问题,请参考以下文章

linux12企业实战 -- 33磁盘夯住问题

Spark-Streaming 记录比较

spark-streaming任务提交遇到的坑

spark-streaming对接kafka的两种方式

java spark-streaming接收TCP/Kafka数据

MySQL 复制夯住一例排查以及原理探讨