1. 程式人生 > >spark原始碼分析--事件匯流排LiveListenerBus

spark原始碼分析--事件匯流排LiveListenerBus

spark事件匯流排的核心是LiveListenerBus,其內部維護了多個AsyncEventQueue佇列用於儲存和分發SparkListenerEvent事件。 spark事件匯流排整體思想是生產消費者模式,訊息事件實現了先進先出和非同步投遞,同時將事件的產生(例如spark core建立stage、提交job)和事件的處理(例如在Spark UI顯示任務資訊)分離,在一定程度上提升了系統的非同步處理效能,是一個比較經典的事件處理模式。

spark DAGScheduler(面向DAG的高層次排程,將任務中依賴的RDD劃分到不同Stage,通過反向getOrCreateParentStages和visit方法建立stage和正向submitStage()、submitMissingTasks()實現stage依次提交),也實現了類似的DAGSchedulerEventProcessLoop來處理DAGSchedulerEvent

spark DAGScheduler同時也是LiveListenerBus一個重要的生產者,向事件匯流排投遞以下四類事件: 1、Task的啟動、推斷執行及獲取Result 2、Stage的提交和結束 3、Job的提交和結束 4、Executor Heartbeat事件的更新,由HeartbeatReceiver呼叫TaskShcheduler發起