Spark工做機制簡述

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將數據抽象爲數據塊,在內存或者磁盤進行存儲,若是數據不在本節點,則還能夠經過遠端節點複製到本機進行計算.spa

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的線程池中執行.
相關文章
相關標籤/搜索