面試|spark模塊 - spark的工做流程?

spark的工做流程?

回答思路

全部spark程序都離不開程序初始化執行任務這兩部分,因此該問題能夠從這兩部分開始回答。面試

1、程序初始化的流程

  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資源。

2、任務執行的流程

  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。

公號:guoweiapp

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

qrcode_for_gh_2c33526595a4_344.jpg

相關文章
相關標籤/搜索