Spark內核
Spark內核泛指Spark的核心運行機制,包括Spark核心組件的運行機制、Spark任務調度機制、Spark內存管理機制、Spark核心功能的運行原理等。
Spark核心組件
Driver
Spark驅動器節點,用於執行Spark任務中的main方法:
- 將用戶程序轉化爲作業(job);
- 在Executor之間調度任務(task);
- 跟蹤Executor的執行情況;
- 通過UI展示查詢運行情況;
Executor
Spark Executor節點是一個JVM進程,負責在 Spark 作業中運行具體任務,任務彼此之間相互獨立。Spark 應用啓動時,Executor節點被同時啓動,並且始終伴隨着整個 Spark 應用的生命週期而存在。如果有Executor節點發生了故障或崩潰,Spark 應用也可以繼續執行,會將出錯節點上的任務調度到其他Executor節點上繼續運行。
Executor兩個核心功能:
- 負責運行組成Spark應用的任務,並將結果返回給驅動器進程;
- 它們通過自身的塊管理器(Block Manager)爲用戶程序中要求緩存的 RDD 提供內存式存儲。RDD 是直接緩存在Executor進程內的,因此任務可以在運行時充分利用緩存數據加速運算。
Spark核心運行流程
任務提交-Driver進程-集羣管理器-分配Executor並啓動-Driver所需資源滿足-main函數(懶執行)-action算子-反向推算-根據寬依賴劃分stage-每一個stage對應一個taskset(中有多個task)–分發task到指定的Executor執行(本地化原則)-Executor不斷與Driver通信,報告任務運行情況。