【異常】SparkStreaming長時間運行出現: Dropping SparkListenerEvent because no remaining room in event queue

問題描述

在SparkStreaming任務提交後,經過長時間的運行會在SparkUI的Jobs界面出現Job的執行時間出現幾個小時的情況,點進去發現Stage已經處於unkown狀態,如下圖:
查看日誌後發現下面ERROR異常:
2018-01-06 16:42:03  [ dag-scheduler-event-loop:600497 ] - [ ERROR ]  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.

問題分析

搜了一些關於消息隊列的文章,在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
然後繼續提交任務,程序運行兩天不再出現上面的問題。


在SparkStreaming的使用中,出現了各種各樣的問題,所以最好輸出日誌,方便出現問題後定位,通過可以過濾掉INFO級別的日誌,不然有非常大的日誌。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章