Spark叢集和任務執行

大資料學習與分享發表於2020-11-06

【前言:承接《Spark通識》篇】

Spark叢集元件

Spark是典型的Master/Slave架構,叢集主要包括以下4個元件:

Driver:Spark框架中的驅動器,執行使用者編寫Application 的main()函式。類比於MapReduce的MRAppmaster

Master:主節點,控制整個叢集,監控worker。在Yarn模式中為全域性資源管理器

Worker:從節點,負責控制計算節點,啟動Executor。類比Yarn中的節點資源管理器

Executor:運算任務執行器,執行在worker節點上的一個程式。類似於MapReduce中的MapTask和ReduceTask

 

Spark基本執行流程

以StandAlone執行模式為例:

 


1. 客戶端啟動應用程式及Driver相關工作,向Master提交任務申請資源
2. Master給Worker分配資源,通知worker啟動executor

3. Worker啟動Executor,Worker建立ExecutorRunner執行緒,ExecutorRunner會啟動ExecutorBackend程式,Executor和Driver進行通訊(任務分發監聽等)

4. ExecutorBackend啟動後向Driver的SchedulerBackend註冊,SchedulerBackend將任務提交到Executor上執行5.所有Stage都完成後作業結束

 

筆者強調:

  1. Driver端進行的操作

    1. SparkContext構建DAG圖

    2. DAGScheduler將任務劃分為stage、為需要處理的分割槽生成TaskSet

    3. TaskScheduler進行task下發

    4. SchedulerBackend將任務提交到Executor上執行
  2. 資源劃分的一般規則

    1. 獲取所有worker上的資源

    2. 按照資源大小進行排序

    3. 按照排序後的順序拿取資源

      1. 輪詢

      2. 優先拿資源多的
  3. Spark不同執行模式任務排程器是不同的,如Yarn模式:yarn-cluster模式為YarnClusterScheduler,yarn-client模式為YarnClientClusterScheduler


關注微信公眾號:大資料學習與分享,獲取更對技術乾貨

相關文章