2021年大數據Spark(七):應用架構基本了解
Spark 應用架構-了解
Driver 和Executors
從圖中可以看到Spark Application運行到集群上時,由兩部分組成:Driver Program和Executors。
第一、Driver Program
相當于AppMaster,整個應用管理者,負責應用中所有Job的調度執行;
運行JVM Process,運行程序的MAIN函數,必須創建SparkContext上下文對象;
一個SparkApplication僅有一個;
第二、Executors
相當于一個線程池,運行JVM Process,其中有很多線程,每個線程運行一個Task任務,一個Task運行需要1 Core CPU,所有可以認為Executor中線程數就等于CPU Core核數;
一個Spark Application可以有多個,可以設置個數和資源信息;
Driver?Program是用戶編寫的數據處理邏輯,這個邏輯中包含用戶創建的SparkContext。SparkContext 是用戶邏輯與Spark集群主要的交互接口,它會和Cluster Manager交互,包括向它申請計算資源等。 Cluster Manager負責集群的資源管理和調度,現在支持Standalone、Apache Mesos和Hadoop的 YARN。Worker Node是集群中可以執行計算任務的節點。 Executor是在一個Worker Node上為某應用啟動的一個進程,該進程負責運行任務,并且負責將數據存在內存或者磁盤上。Task 是被送到某個Executor上的計算單元,每個應用都有各自獨立的 Executor,計算最終在計算節點的 Executor中執行。
用戶程序從最開始的提交到最終的計算執行,需要經歷以下幾個階段:
1)、用戶程序創建 SparkContext 時,新創建的 SparkContext 實例會連接到 ClusterManager。 Cluster Manager 會根據用戶提交時設置的 CPU 和內存等信息為本次提交分配計算資源,啟動 Executor。
2)、Driver會將用戶程序劃分為不同的執行階段Stage,每個執行階段Stage由一組完全相同Task組成,這些Task分別作用于待處理數據的不同分區。在階段劃分完成和Task創建后, Driver會向Executor發送 Task;
3)、Executor在接收到Task后,會下載Task的運行時依賴,在準備好Task的執行環境后,會開始執行Task,并且將Task的運行狀態匯報給Driver;
4)、Driver會根據收到的Task的運行狀態來處理不同的狀態更新。 Task分為兩種:一種是Shuffle Map Task,它實現數據的重新洗牌,洗牌的結果保存到Executor 所在節點的文件系統中;另外一種是Result Task,它負責生成結果數據;
5)、Driver 會不斷地調用Task,將Task發送到Executor執行,在所有的Task 都正確執行或者超過執行次數的限制仍然沒有執行成功時停止;
Job、DAG和Stage
還可以發現在一個Spark Application中,包含多個Job,每個Job有多個Stage組成,每個Job執行按照DAG圖進行的。
其中每個Stage中包含多個Task任務,每個Task以線程Thread方式執行,需要1Core CPU。
可以看到Spark為應用程序提供了非常詳盡的統計頁面,每個應用的Job和Stage等信息都可以在這里查看到。通過觀察應用詳情頁的各個信息,對進一步優化程序,調整瓶頸有著重要作用,后期綜合項目案例詳細講解。
Spark Application程序運行時三個核心概念:Job、Stage、Task,說明如下:
Task:被分配到各個 Executor 的單位工作內容,它是 Spark 中的最小執行單位,一
般來說有多少個 Paritition(物理層面的概念,即分支可以理解為將數據劃分成不同
部分并行處理),就會有多少個 Task,每個 Task 只會處理單一分支上的數據。
Job:由多個 Task 的并行計算部分,一般 Spark 中的 action 操作(如 save、collect,后面進一步說明),會生成一個 Job。
Stage:Job 的組成單位,一個 Job 會切分成多個 Stage,Stage 彼此之間相互依賴順序執行,而每個 Stage 是多個 Task 的集合,類似 map 和 reduce stage。
spark 大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。