Spark的整體流程爲:Client提交應用,Master找到一個Worker啓動Driver,Driver向Master或者資源管理器申請資源,之後將應用轉化爲RDD Graph,再由DAGScheduler將RDD Graph轉化爲Stage的有向無環圖提交給TaskScheduler,由TaskScheduler提交任務給Executor執行。在任務執行的過程中,其他組件協同工作,確保整個應用順利執行。
Client:作爲用戶的客戶端負責提交應用。
Master:作爲整個集羣的控制器,負責整個集羣的正常運行。
Worker:相當於計算節點,接收主節點命令並進行狀態彙報。
Driver:負責控制一個應用程序,其運行Application的main()函數,並創建SparkContext。
SparkContext:是整個應用的上下文,控制應用的生命週期。
RDD:Spark的基本計算單元,一組RDD可形成執行的有向無環圖RDD Graph。
DAGScheduler:根據作業(Job)構建基於Stage的DAG,並提交Stage給TaskScheduler。
TaskScheduler:將任務分發給Executor。
Executor:執行器,在worker node上執行任務的組件,用於啓動線程池運行任務。
Spark框架中其他組件的作用:
SparkConf:負責存儲配置信息。
MetricsSystem:監控運行時性能指標信息。
BlockManager:負責存儲管理,負責創建和查找block。
BrocastManager:負責廣播變量的控制與元信息的存儲。
Progress is not created by contented people.