Applicationjava
用戶編寫的Spark應用程序。Application的main方法爲應用程序的入口,用戶經過Spark的API,定義了RDD和對RDD的操做。編程
Job緩存
提供給Spark運行的做業,一個Application中以Action爲劃分邊界每每會產生多個Job。Spark採用惰性機制,對RDD的建立和轉換並不會當即執行,只有在遇到Action時纔會生成一個Job,而後統一調度執行。ide
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。ip
Task分爲ShuffleMapTask和ResultTask兩種,位於最後一個Stage的Task爲ResultTask,其餘階段的屬於ShuffleMapTask。資源
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啓動。
DAGScheduler
根據Job構建DAG圖,將Job拆分紅多個Stage並提交給TaskScheduler。
TaskScheduler
將Stage拆分紅多個Task並提交給worker運行,Executor運行什麼Task就是在此處分配的。
忠於技術,熱愛分享。歡迎關注公衆號:java大數據編程,瞭解更多技術內容。