《深入理解Spark》之Spark的整體執行流程
spark作為流行的計算框架,下面是其執行流程圖,以Cluster模式為例
1、通過spark-submit的方式提交作業,此時應用程式向master傳送請求啟動Driver程式
Driver程式負責對資源和任務的排程
2、Master在資源充足的Worker上啟動一個Driver程式
這裡需要注意是Master找到資源充足的Worker並向其傳送訊息有Worker啟動Driver程式
3、當Driver啟動後,Driver就開始排程任務,首先初始化SparkContext
在初始化SparkContext時會產生兩個重要的物件,1個是DAGSchedule另一個是TaskSchedule
首先是TaskSchedule的實現類 TaskScheduleImpl 由它負責具體的任務排程 (當然不同的任務排程由不同的實現類實現,後續文章會有介紹)
DAGSchedule負責任務的邏輯排程和stage切分
最後還會開啟一個jetty的web服務,埠預設是4040,向外提供作業的web服務
此時算是SparkContext初始化完成
4、當Spark上下文初始化完成後就需要去執行具體的job即我們寫的Spark程式碼,此時Driver會向Master申請資源(在啟動任務時填寫的資源)
5、Master找出資源充足的Worker並啟動Executor (與Driver一樣,Executor也是有Worker啟動的)
6、當Executor啟動完畢後會反向註冊給 TaskScheduleImpl(給該app分配的executor不再經過Master而是直接到該APP對應的TaskScheduleImpl上註冊)
7、此時整個Spark作業需要的資源就已經申請完成了
剩下的就是按照spark作業執行任務 有DAGSchedule切分Stage並封裝為TaskSet
由TaskScheduleImpl拆分TaskSet並執行對應的任務
8、將執行的任務返回給客戶端
總結:所謂的Master和Worker只是Spark內建資源排程框架中資源管理主節點和從節點的叫法,在yarn中叫ResourceManager和NodeManager。
相關文章
- 《深入理解Spark》之sparkSQL 處理流程SparkSQL
- Spark學習(一)——執行模式與執行流程Spark模式
- Spark Task 的執行流程② - 建立、分發 TaskSpark
- Spark的執行原理Spark
- Spark Task 的執行流程④ - task 結果的處理Spark
- 深入理解執行緒池的執行流程執行緒
- 【Spark】 Spark作業執行原理--獲取執行結果Spark
- spark學習筆記--叢集執行SparkSpark筆記
- spark執行原理、模型Spark模型
- spark 原始碼分析之二十一 -- Task的執行流程Spark原始碼
- Spark之spark shellSpark
- Spark in action on Kubernetes - Spark Operator的原理解析Spark
- Spark SQL:4.對Spark SQL的理解SparkSQL
- 深入理解Spark 2.1 Core (五):Standalone模式Spark模式
- Spark程式碼在叢集上執行過程理解Spark
- Spark原理-物理執行圖Spark
- 檢視spark程式執行狀態以及安裝sparkSpark
- spark-submit提交任務時執行流程(簡單版)SparkMIT
- Spark工作流程Spark
- Spark入門(二)--如何用Idea執行我們的Spark專案SparkIdea
- 深入原始碼理解Spark RDD的資料分割槽原理原始碼Spark
- ==[圖]Spark系列(四)整體架構分析Spark架構
- spark 原始碼分析之十八 -- Spark儲存體系剖析Spark原始碼
- spark 原始碼分析之十五 -- Spark記憶體管理剖析Spark原始碼記憶體
- 深入淺出理解 Spark:環境部署與工作原理Spark
- spark 原始碼分析之十六 -- Spark記憶體儲存剖析Spark原始碼記憶體
- 深入淺出Spark JoinSpark
- Spark叢集和任務執行Spark
- Spark 系列(九)—— Spark SQL 之 Structured APISparkSQLStructAPI
- Spark報錯(二):關於Spark-Streaming官方示例wordcount執行異常Spark
- Spark RDD中Runtime流程解析Spark
- spark streaming執行kafka資料來源SparkKafka
- docker下的spark叢集,調整引數榨乾硬體DockerSpark
- pycharm下與spark的互動 詳細配置說明以及spark 執行簡單例子PyCharmSpark單例
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- Spark之HiveSupport連線(spark-shell和IDEA)SparkHiveIdea
- Spark 原始碼系列(九)Spark SQL 初體驗之解析過程詳解Spark原始碼SQL
- Spark閉包 | driver & executor程式程式碼執行Spark