面試|spark模塊 spark的工作流程?

 

spark的工作流程是什麼​

回答思路

所有spark程序都離不開程序初始化執行任務這兩部分,所以該問題可以從這兩部分開始回答。

一、程序初始化的流程

  1. 用戶通過sparksubmit提交程序以後,driver程序開始運行(driver程序就是運行起來的提交的程序,可以理解爲spark的main程序)。

  2. driver程序運行起來會首先初始化sparkContext。

  3. 在SparkContext對象中做的最重要的事情就是構造出一個DAGSchedule和一個TaskScheduler。

  4. 上述的TaskScheduler構建出來以後,通過它的一個後臺進程去向spark的Master節點註冊該driver對應的application,此時該application也附帶了該spark程序所需要的資源信息。

  5. Master接收到這個Application的時候,會根據application所需要的資源,從自己的work節點啓動對應的Executor進程。

  6. 當worker節點中的Executor進程啓動起來之後,會反向註冊到TaskScheduler上面,通知TaskScheduler,我已經準備好了,可以幹活了。

  7. 至此,new sparkcontext()初始化完畢,TaskScheduler已經拿到了Executor資源。

二、任務執行的流程

  1. 先進行Job及Stage的切分,當程序每讀到action的時候,DAGScheduler開始切分Job,根據寬窄依賴切分Stage,然後封裝成TaskSet,將TaskSet發送給TaskScheduler,一個TaskSet對應一個Stage,一個Stage在對應的一個job裏面。

  2. 發送task到執行進程,當TaskSchedule拿到TaskSet以後,會將TaskSet打散,變成一個個的task,TaskScheduler會把Taskset裏面每一個Task提交到分配的Executor中去執行。

  3. task開始執行,當Executor接收到Task一塊,會啓動一個TaskRunner,將Task封裝起來,TaskRunner會從線程池中拿一個線程會運行這個task。

 

公衆號搜索       guowei 

 

——專注於大數據面試講解,致力於用最簡潔的語言把解題思路講清楚。

發佈了77 篇原創文章 · 獲贊 34 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章