Spark中核心組件的基本知識

1 運行架構

Spark框架的核心是一個計算引擎,採用標準的master-slave的結構,圖中的Driver表示master,負責整個集羣的作業任務調度,Executor則是slave,負責實際執行任務
架構圖

2 核心組件

2.1 Driver

Spark驅動器節點,用於執行Spark任務中的main方法,負責實際代碼的執行工作
簡單理解就是Driver是驅使整個應用運行起來的程序

2.2 Executor

是工作節點中的JVM進程,負責具體任務,如果有Executor節點發生故障或者崩潰,會講出錯任務調度到其他節點執行

2.3 Master 與 Worker

Spark集羣的獨立部署環境中,自身實現了資源調度,即Master朱啊喲負責資源的調度和分配,並進行集羣的監控,類似於Yarn環境中的RM,Worker一個Work運行與一臺服務器上,類似於Yarn環境中的NM

2.4 ApplicationMaster

RM(資源)和Driver(計算)之間的解耦合靠的就是AplicationMaster

3 核心概念

3.1 Executor 與 Core

集羣中運行在工作節點(Work)中的一個JVM進程,是整個集羣中的專門用於計算的節點。
提交應用中,可以提供參數指定計算節點的個數,以及對應的資源。資源一般是指工作節點Executor的內存大小和使用的虛擬CPU核(Core)數目
相關的啓動參數:
啓動參數

3.2 並行度

多個任務同時執行,分佈在不同的計算節點計算,所以可以實現多任務並行執行,這裏我們將整個集羣並行執行任務的數量稱之爲並行度

3.3 有向無環圖(DAG)

大數據計算引擎我們根據使用方式一般分爲四類,一類是Hadoop所承載的MapRuduce,它將計算分爲兩個階段,分別爲Map和Reduce,需要拆分算法,多個Job串聯。支持DAG的框架爲第二代計算引擎,比如Tez和Oozie,第三代則爲Spark,特點是Job內部的DAG支持,以及實時計算。

4 提交流程

Yarn環境下的提交流程:
流程圖
Spark應用程序提交到Yarn環境中執行的時候,兩種方式:Client和Cluster。主要區別在於:Driver程序的運行節點

4.1 Yarn Client模式

Client模式將用於監控和調度的Driver模塊在客戶端執行,而不是Yarn中,一般用於測試
* Driver在任務提交的本地機器運行
* Driver啓動後和ResourceManager通訊申請啓動ApplicationMaster
* ResourceManager分配container,在合適的NodeManager上啓動ApplicationMaster,負責向RexourceManager申請Executor內存
* ResourceManager接到ApplicationMaster的資源申請後會分配container,然後ApplicationMaster在資源分配指定的NodeManager上啓動Executor進程
* Executor進程啓動後會向Driver反向註冊,Executor全部註冊完成後Driver開始執行main函數
* 之後執行到Action算子時,觸發一個Job,並根據寬依賴開始劃分stage,每個stage生成對應的TaskSet,之後將task分發到各個Executor上執行

4.2 Yarn Cluster 模式

將用於監控和調度的Driver模式啓動在Yarn集羣資源中執行,一般應用於實踐生產環境

  • 在YARN Cluster模式下,任務提交後會和ResourceManager通訊申請啓動ApplicationMaster,
  • 隨後ResourceManager分配container,在合適的NodeManager上啓動ApplicationMaster,此時的ApplicationMaster就是Driver。
  • Driver啓動後向ResourceManager申請Executor內存,ResourceManager接到ApplicationMaster的資源申請後會分配container,然後在合適的NodeManager上啓動Executor進程
  • Executor進程啓動後會向Driver反向註冊,Executor全部註冊完成後Driver開始執行main函數,
  • 之後執行到Action算子時,觸發一個Job,並根據寬依賴開始劃分stage,每個stage生成對應的TaskSet,之後將task分發到各個Executor上執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章