Spark原理簡單介紹

http://spark.apache.org/docs/latest/cluster-overview.html

 

名詞解釋

1.Application:指的是用戶編寫的Spark應用程序/代碼,包含了Driver功能代碼和分佈在集羣中多個節點上運行的Executor代碼。

2.Driver:Spark中的Driver即運行上述Application的Main()函數並且創建SparkContext,SparkContext負責和ClusterManager通信,進行資源的申請、任務的分配和監控等

3.Cluster Manager:指的是在集羣上獲取資源的外部服務,Standalone模式下由Master負責,Yarn模式下ResourceManager負責;

4.Executor:是運行在工作節點Worker上的進程,負責運行任務,併爲應用程序存儲數據,是執行分區計算任務的進程;

5.RDD:Resilient Distributed Dataset彈性分佈式數據集,是分佈式內存的一個抽象概念;

6.DAG:Directed Acyclic Graph有向無環圖,反映RDD之間的依賴關係和執行流程;

7.Job:作業,按照DAG執行就是一個作業;Job==DAG

8.Stage:階段,是作業的基本調度單位,同一個Stage中的Task可以並行執行,多個Task組成TaskSet任務集

9.Task:任務,運行在Executor上的工作單元,一個Task計算一個分區,包括pipline上的一系列操作

基本流程

1.當一個Spark應用被提交時,首先需要爲這個Spark Application構建基本的運行環境,即由任務控制節點(Driver)創建一個SparkContext,

2.SparkContext向資源管理器註冊並申請運行Executor資源;

3.資源管理器爲Executor分配資源並啓動Executor進程,Executor運行情況將隨着心跳發送到資源管理器上;

4.SparkContext根據RDD的依賴關係構建成DAG圖,並提交給DAGScheduler進行解析劃分成Stage,並把該Stage中的Task組成Taskset發送給TaskScheduler。

5.TaskScheduler將Task發放給Executor運行,同時SparkContext將應用程序代碼發放給Executor。

6.Executor將Task丟入到線程池中執行,把執行結果反饋給任務調度器,然後反饋給DAG調度器,運行完畢後寫入數據並釋放所有資源。

流程圖解

總結

1.Spark應用被提交-->SparkContext向資源管理器註冊並申請資源-->啓動Executor

2.RDD-->構建DAG-->DAGScheduler劃分Stage形成TaskSet-->TaskScheduler提交Task-->Worker上的Executor執行Task

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章