Spark工作機制

主要模組

  • 排程與任務分配
  • I/O模組
  • 通訊控制模組
  • 容錯模組
  • Shuffle模組

排程層次

  • 應用
  • 作業
  • Stage
  • Task

排程演算法

  • FIFO
  • FAIR(公平排程)

Spark應用執行機制

總覽

Spark應用提交後經歷了一系列的轉換,最後成為Task在每個節點上執行.

  • RDD的Action運算元觸發Job的提交,提交到Spark中的Job生成RDD DAG
  • 由DAGScheduler轉化為Stage Dage
  • 每個Stage中產生相應的Task集合
  • TaskScheduler將任務分發到Executor執行

每個任務對應相應的一個數據塊,使用使用者定義的函式處理資料塊.

Spark實現了分散式計算和任務處理,並實現了任務的分發,跟蹤,執行等工作.最終聚合結果,完成Spark應用的計算.

對RDD的塊管理通過BlockManger完成.BlockManager將資料抽象為資料塊,在記憶體或者磁碟進行儲存,如果資料不在本節點,則還可以通過遠端節點複製到本機進行計算.

Spark應用

執行模式

  • Local
  • Standalone
  • YARN
  • Mesos
  • Cluster模式
  • Client模式

應用的基本元件

  • Application:使用者自定義的Spark程式,使用者提交後,Spark為App分配資源,將程式轉換並執行
  • Driver Program:執行Application的main()建立並建立SparkContext
  • RDD Graph:RDD是Spark的核心結構,當RDD遇到Action運算元時,將之前的所有運算元形成一個DAG,也就是RDD Graph.再在Spark中轉化為Job,提交到叢集執行.一個App中可以包含多個Job.
  • Job:一個RDD Graph觸發的作業,往往由Spark Action運算元觸發.在SparkContext中通過runJob方法向Saprk提交Job.
  • Stage:每個Job會根據RDD的寬依賴關係唄切分很多Stage,每個Stage中包含一組相同的Task,這一組Task也叫TaskSet.
  • Task:一個分割槽對應一個Task,Task執行RDD中對應Stage中包含的運算元.Task被封裝好後放入Executor的執行緒池中執行.