DAGScheduler的主要流程
1、應用程序通過對Spark API的調用,進行一系列RDD轉換構建出RDD之間的依賴關係後,調用DAGScheduler的runJob方法將RDD及其血緣關係中的所有RDD傳遞給DAGScheduler調度。
2、DAGScheduler的runJob方法通過調用DAGScheduler的submitJob方法向DAGSchedulerEventProcessLoop發送JobSubmitted事件。DAGSchedulerEventProcessLoop接受到JobSubmitted事件後,將JobSubmitted事件放入事件隊列(eventQueue)中。
3、DAGSchedulerEventProcessLoop內部的輪詢線程eventThread不斷從事件隊列(eventQueue)中獲取DAGSchedulerEvent事件,並調用DAGSchedulerEventProcessLoop的doOnReceive方法對事件進行處理。
4、DAGSchedulerEventProcessLoop的doOnReceive方法處理JobSubmitted事件時,將調用DAGScheduler的
handleJobSubmitted方法。handleJobSubmitted方法將對RDD構建Stage及Stage的依賴關係。
5、DAGScheduler首先把最上游的Stage中的Task集合提交給TaskScheduler,然後逐步將下游的Stage中的Task集合提交給TaskScheduler。TaskScheduler將對Task集合進行調度。
閱讀更多 石頭渣渣 的文章