spark程式碼提交流程(Standalone)
阿新 • • 發佈:2019-01-31
spark-submit提交程式碼
執行new SparkContext(),在SparkContext裡構造DAGScheduler和TaskScheduler.
TaskScheduler會通過後臺的一個程序,連線Master,向Master註冊Application。
Master接收到Application請求後,會使用相應的資源排程演算法,在Worker上為這個Application啟動多個Executer。
Executor啟動後,會自己反向註冊到TaskScheduler中。
所有Executor都註冊到Driver上之後,SparkContext結束初始化,接下來往下執行我們自己的程式碼。
每執行到一個Action,就會建立一個Job。Job會提交給DAGScheduler。
DAGScheduler會將Job劃分為多個stage,然後每個stage建立一個TaskSet.
TaskScheduler會把每一個TaskSet裡的Task,提交到Executor上執行。
Executor上有執行緒池,每接收到一個Task,就用TaskRunner封裝,然後從執行緒池裡取出一個執行緒執行這個task。
(TaskRunner將我們編寫的程式碼,拷貝,反序列化,執行Task)
(每個Task執行RDD裡的一個partition)