簡述Spark工作流程


 

 

 Spark工作流程由4個主體聯系構成(如上圖所示):

  • Application:指用戶編寫的Spark應用程序,其中包括一個Driver功能的代碼和分布在集群中多個節點上運行的Executor代碼
  • Master:主節點,布置作業
    • Block Tracker用於記錄計算數據在Worker節點上的塊信息
    • Shuffle Blocker用於記錄RDD在計算過程中遇到Shuffle過程時會進行物化,Shuffle Tracker用於記錄這些物化的RDD的存放信息
  • Cluster Manager:控制整個集群,監控worker
  • Worker:從節點負責控制計算,啟動Executor或者Driver。
    • Driver: 運行Application 的main()函數
    • Executor:執行器,是為某個Application運行在worker node上的一個進程
       
工作流程:
  1. 用戶編寫應用程序以后交給Master
  2. Master啟動RDD Graph,對任務進行划分,構建DAG圖。將DAG圖分解成Stage,將Taskset發送給Task Scheduler。
  3. 由Task Scheduler將Task發送給Executor運行
  4. 在這期間,Manager會負責監管Worker的運行。計算結果層層返回。

 

具體實現:

  1. 構建Spark Application的運行環境,啟動SparkContext
  2. SparkContext向資源管理器(可以是Standalone,Mesos,Yarn)申請運行Executor資源,並啟動StandaloneExecutorbackend
  3. Executor向SparkContext申請Task
  4. SparkContext將應用程序分發給Executor
  5. SparkContext構建成DAG圖,將DAG圖分解成Stage、將Taskset發送給Task Scheduler,最后由Task Scheduler將Task發送給Executor運行
  6. Task在Executor上運行,運行完釋放所有資源

參考文獻:spark工作流程及原理(一)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM