首页 > 代码库 > Spark-streaming stage夯住原因分析

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个小时的试运行,没再出现夯住的现象。说明该参数的确解决了问题

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    Spark-streaming stage夯住原因分析