1. 程式人生 > >2.spark基本概念

2.spark基本概念

executor shuff 分享圖片 jvm ive schedule adf RKE 立即執行

技術分享圖片

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。

技術分享圖片

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就是在此處分配的。

2.spark基本概念