1. 程式人生 > >spark基本概念與執行架構

spark基本概念與執行架構

Apache Spark是一個分散式計算框架,旨在簡化運行於計算機叢集上的並行程式的編寫。

 

RDD:彈性分散式資料集(Resilient Distributed Dataset)是分散式記憶體的一個抽象概念,提供了一個高度受限的共享記憶體模型。一個RDD包含多個分割槽(Partition)。

DAG:有向無環圖(Directed Acyclic Graph)反應RDD之間的依賴關係。

Executor:執行在工作節點(WorkNode)的一個程序,負責執行Task。

Application:使用者編寫的Spark程式。

Task:執行在Executor上的工作單元。

Job

:一個Job包含多個RDD及作用於相應RDD上的各種操作。

Stage:是Job的基本排程單位,一個Job會分為多組Task,每組Task被稱為Stage,或者也被稱為TaskSet,代表了一組由關聯的、相互之間沒有shuffle依賴關係的任務組成的任務集。

 

 

與MapReduce相比的優勢:

  • 利用多執行緒來執行具體的任務,減少任務的啟動開銷
  • Executor中有一個BlockManager儲存模組,會將記憶體和磁碟共同作為儲存裝置,減少IO開銷

 

 

  1.  為應用構建起基本的執行環境,即由Driver建立一個SparkContext進行資源的申請、任務的分配和監控。
  2. 資源管理器為Executor分配資源,並Executor啟動程序。
  3. SparkContext根據RDD的依賴關係構建DAG圖,DAG圖提交給DAGScheduler解析成Stage,然後把一個個TaskSet提交給底層排程器TaskScheduler處理;Executor向SparkContext申請Task,TaskScheduler將Task發放給Executor執行並提供應用程式程式碼。
  4. Task在Executor上執行把執行結果反饋給TaskSchedulor,然後反饋給DAGScheduler,執行完畢後寫入資料並釋放所有資源。

 

Spark執行架構特點

  1. 每個Application都有自己專屬的Executor程序,並且該程序在Application執行期間一直駐留。Executor程序以多執行緒的方式執行Task。
  2. Spark執行過程與資源管理器無關,只要能夠獲取Executor程序並儲存通訊即可。
  3. Task採用資料本地性和推測執行等優化機制。


(廈門大學大資料公開課筆記)