Spark定製班第25課:Spark Streaming的StreamingContext啓動及JobScheduler啓動源碼圖解

本期內容:
1. StreamingContext啓動源碼圖解
2. JobScheduler啓動源碼圖解

StreamingContext的start方法對INITIALIZED、ACTIVE、STOPPED等狀態分別做不同處理。
StreamingContext在INITIALIZED狀態時,用validate方法對DStreamGraph、checkpoint等做有效檢查,然後啓動新的線程設置SparkContext,最後啓動JobScheduler。
JobScheduler中的eventLoop是帶有一個消息隊列的線程循環器。接收的消息有JobStarted、JobCompleted、ErrorReported等三種。eventLoop用start方法啓動。
JobScheduler還把所有InputDStream的rateController放入監聽器中。然後啓動了listenerBus。
然後啓動了receiverTracker、jobGenerator。這兩個在JobScheduler中至關重要。
ReceiverTracker中有個適用於RPC的ReceiverTrackerEndpoint類型的消息循環體,用receive方法接收StartAllReceivers、RestartReceiver、CleanupOldBlocks、UpdateReceiverRteLimit等4種消息,用receiveAndREply方法接收RegisterReceiver、AddBlock、DeregisterReceiver、AllReceiverIds、StopAllReceivers等五種消息。消息有自己給自己發的消息,也有遠程發來的消息。
shutdownHookManager用於關閉時。env.metricsSystem用於計量,註冊的計量信息在StreamingSource中有定義。uiTab用於web界面。針對UI界面,定義有StreamingPage、BatchPage等WebUIPage的子類 ,做定製時也可定義自己的Page。
源碼需要在細節上下工夫。深度決定廣度。
JobGenerator中也有一個消息循環體。

所以,JobScheduler有3個消息循環體。如下圖所示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章