2.spark基本概念

基本概念1

Application

用戶編寫的Spark應用程序。Application的main方法爲應用程序的入口,用戶通過Spark的API,定義了RDD和對RDD的操作。

Job

 提供給Spark運行的作業,一個Application中以Action爲劃分邊界往往會產生多個Job。Spark採用惰性機制,對RDD的創建和轉換並不會立即執行,只有在遇到Action時纔會生成一個Job,然後統一調度執行。

Stage

每個Job以Shuffle爲邊界劃分出的不同階段, 其名稱爲Stage。Stage有非最終的Stage(Shuffle Map Stage)和最終的Stage(Result Stage)兩種。

在對Job中的所有操作劃分Stage時,一般會按照倒序進行:即從Action開始,遇到窄依賴操作,則劃分到同一個執行階段;遇到寬依賴操作,則劃分一個新的執行階段,且新的階段爲之前階段的parent,然後依次類推遞歸執行。child Stage需要等待所有的parent Stage執行完之後纔可以執行,這時Stage之間根據依賴關係構成了一個大粒度的DAG。在一個Stage內,所有的操作以串行的Pipeline的方式,由一組Task完成計算。

Task

真正執行的工作單元,對一個Stage之內的RDD進行串行操作的計算任務。多個Task組成一個Stage。

Task分爲ShuffleMapTask和ResultTask兩種,位於最後一個Stage的Task爲ResultTask,其他階段的屬於ShuffleMapTask。

基本概念2

Cluster Manager

在集羣上獲取資源的外部服務。Cluster Manager可以爲自帶的Standalone、或第三方的Yarn和Mesos。

Cluster Manager一般採用Master-Slave結構。以Yarn爲例,部署ResourceManager服務的節點爲Master,負責集羣中所有計算資源的統一管理和分配;部署NodeManager服務的節點爲Slave,負責在當前節點創建一個或多個具備獨立計算能力的JVM實例,在Spark中,這些節點也叫做Worker。

Executor

某個Application運行在worker節點上的一個進程,  該進程負責運行某些Task,並將結果返回給Driver,同時爲需要緩存的RDD提供存儲功能。

Driver

準備Spark應用程序的運行環境,負責執行用戶Application中的main方法,提交Job,並將Job轉化爲Task,在各個Executor進程間協調Task的調度。

Spark有Client和Cluster兩種部署模式。Application以Client模式部署時,Driver運行於Client節點;而以Cluster模式部署時,Driver運行於Worker節點,與Executor一樣由Cluster Manager啓動。

基本概念3

DAGScheduler

根據Job構建DAG圖,將Job拆分成多個Stage並提交給TaskScheduler。

TaskScheduler

將Stage拆分成多個Task並提交給worker運行,Executor運行什麼Task就是在此處分配的。


忠於技術,熱愛分享。歡迎關注公衆號:java大數據編程,瞭解更多技術內容。

這裏寫圖片描述

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