1.基本概念
•rdd:是resillient distributed dataset(彈性分布式資料集)的簡稱,是分布式記憶體的乙個抽象概念,提供了一種高度受限的共享記憶體模型
•dag:是directed acyclic graph(有向無環圖)的簡稱,反映rdd之間的依賴關係
•executor:是執行在工作節點(workernode)的乙個程序,負責執行task
•task:執行在executor上的工作單元
•job:乙個job包含多個rdd及作用於相應rdd上的各種操作
•stage:是job的基本排程單位,乙個job會分為多組task,每組task被稱stage,或者也被稱為taskset,代表了一組關聯的、相互之間沒有shuffle依賴關係的任務組成的任務集
2.架構設計
•spark執行架構包括集群資源管理器(cluster manager)、執行作業任務的工作節點(worker node)、每個應用的任務控制節點(driver)和每個工作節點上負責具體任務的執行程序(executor)。其中,集群資源管理器可以是spark自帶的資源管理器,也可以是yarn或mesos等資源管理框架。
•資源管理器可以自帶或mesos或yarn與hadoop mapreduce計算框架相比,spark所採用的executor有兩個優點:
(1).利用多執行緒來執行具體的任務,減少任務的啟動開銷
(2).executor中有乙個blockmanager儲存模組,會將記憶體和磁碟共同作為儲存裝置,當需要多輪迭代計算時,可以將中間結果儲存到這個儲存模組裡,下次需要時,就可以直接讀該儲存模組裡的資料,而不需要讀寫到hdfs等檔案系統裡,因而有效減少了io開銷;或者在互動式查詢場景下,預先將表快取到該儲存系統上,從而可以提高讀寫io效能
圖 1 - spar執行架構
圖 2 - spark中各種概念之間的相互關係
2.spark執行基本流程
圖 3 - spark執行基本流程圖
sparkcontext物件代表了和乙個集群的連線
(1)當乙個spark應用被提交時,首先需要為這個應用構建起基本的執行環境,即由任務控制節點(driver)建立乙個sparkcontext,由sparkcontext負責和資源管理器(cluster manager)的通訊以及進行資源的申請、任務的分配和監控等。sparkcontext會向資源管理器註冊並申請執行executor的資源;
(2)資源管理器為executor分配資源,並啟動executor程序,executor運**況將隨著「心跳」傳送到資源管理器上;
(3)sparkcontext根據rdd的依賴關係構建dag圖,dag圖提交給dag排程器(dagscheduler)進行解析,將dag圖分解成多個「階段」(每個階段都是乙個任務集),並且計算出各個階段之間的依賴關係,然後把乙個個「任務集」提交給底層的任務排程器(taskscheduler)進行處理;executor向sparkcontext申請任務,任務排程器將任務分發給executor執行,同時,sparkcontext將應用程式**發放給executor;
(4)任務在executor上執行,把執行結果反饋給任務排程器,然後反饋給dag排程器,執行完畢後寫入資料並釋放所有資源。
Spark執行架構
job 包含多個task組成的平行計算,乙個dag觸發的作業,由action運算元觸發,在sparkcontext中通過runjob方法向spark提交job stage job的排程單位,每個job會根據rdd的寬依賴關係被切分成很多stage,每個stage中包含一組相同的task,這組task...
Spark執行架構
在driver program中新建sparkcontext 包含sparkcontext的程式稱為driver program 2 sparkcontext向資源管理器申請執行executor資源,並啟動standaloneexecutorbackend,executor向sparkcontent...
Spark執行架構
spark執行架構要背下來 driver program 執行main函式的程序,並且建立了乙個sparkcontext cluster manager 乙個從cluster申請資源的外部服務 deploy mode 區分driver程序跑在 client模式下,driver跑在本地 cluster...