1.使用spark-submit提交腳本
2.此時會產生一個Driver進程,Driver主要用來運行我們提交的代碼
3.spark腳本的開頭通常是創建SparkContext的代碼,Driver運行到此處時,先創建SparkContext對象,SparkContext會構建DAGScheduler和TaskScheduler
4.TaskScheduler連接到集羣的Master
5.Master運用資源調度算法,通知Worker啓用Executor
6.Executor反向註冊到TaskScheduler上(用於讓TaskScheduler直接在之後將task扔給executor執行)
7.至此,SparkContext初始化完成,Driver繼續執行後面的代碼
8.當Driver遇到一個Action時,會產生一個job,每個job由DAGScheduler根據是否有Shuffle將job劃分爲多個stage,每個stage創建一個TaskSet
9.TaskSet將task給TaskScheduler
10.TaskScheduler會通過task分配算法將TaskSet裏的task提交給executor
11.executor在線程池裏取一個線程來完成計算任務。