1. 程式人生 > >Spark基本架構

Spark基本架構

Spark基本架構圖如下:

Client:客戶端程序,負責提交作業。

Driver:一個Spark作業有一個spark context,一個Spark  Context對應一個Driver程序,作業的main函式執行在Driver中。Driver主要負責Spark作業的解析,以及通過DAGSchduler劃分stage,將Stage轉化成TaskSet提交給TaskScheduler任務排程器,進而排程Task到Executor上執行。

 

Executor:負責執行Driver分發的Task任務。叢集中一個節點可以啟動多個Executor,每個Executor可以執行多個Task任務。

 

Cache:Spark提供了對RDD不同級別的快取策略,分別可以快取到記憶體、磁碟、外部分散式記憶體儲存系統如Tachyon等。

 

Applicatio:提交的一個作業就是一個Appliation。一個Application只有一個Spark Context。

 

Job:RDD執行一次Action操作應付生成一個Job。

 

Task:Spark執行的基本單位,負責 處理RDD的計算邏輯。

 

Stage:DAGScheduler將Job劃分為多個Stage,Stage的劃分界限為Shuffle的產生,Suffle標誌著上一個Stage的結束和下一個Stage的開始。

 

TaskSet:劃分的Stage會轉換成一組相關聯的任務集。

 

RDD(Resilient Distributed Dataset):彈性分散式資料集,可以理解為一種只讀的分散式多分割槽的陣列,Spark計算操作都是基於RDD進行的,下面會有詳細介紹。

 

DAG(Directed Acyclic Graph):有向無環圖。Spark實現了DAG的計算模型,DAG計算模型是指將一個計算任務按照計算規則分解為若干子任務,這些子任務之間根據邏輯關係構建成有向無環圖。