1. 程式人生 > >Spark任務提交方式和執行流程

Spark任務提交方式和執行流程

ref www. ack app cnblogs driver tex src tor

轉自:http://www.cnblogs.com/frankdeng/p/9301485.html

一、Spark中的基本概念

(1)Application:表示你的應用程序

(2)Driver:表示main()函數,創建SparkContext。由SparkContext負責與ClusterManager通信,進行資源的申請,任務的分配和監控等。程序執行完畢後關閉SparkContext

(3)Executor:某個Application運行在Worker節點上的一個進程,該進程負責運行某些task,並且負責將數據存在內存或者磁盤上。在Spark on Yarn模式下,其進程名稱為 CoarseGrainedExecutor Backend,一個CoarseGrainedExecutor Backend進程有且僅有一個executor對象,它負責將Task包裝成taskRunner,並從線程池中抽取出一個空閑線程運行Task,這樣,每個CoarseGrainedExecutorBackend能並行運行Task的數據就取決於分配給它的CPU的個數。

(4)Worker:集群中可以運行Application代碼的節點。在Standalone模式中指的是通過slave文件配置的worker節點,在Spark on Yarn模式中指的就是NodeManager節點。

(5)Task:在Executor進程中執行任務的工作單元,多個Task組成一個Stage

(6)Job:包含多個Task組成的並行計算,是由Action行為觸發的

(7)Stage:每個Job會被拆分很多組Task,作為一個TaskSet,其名稱為Stage

(8)DAGScheduler:根據Job構建基於Stage的DAG,並提交Stage給TaskScheduler,其劃分Stage的依據是RDD之間的依賴關系

(9)TaskScheduler:將TaskSet提交給Worker(集群)運行,每個Executor運行什麽Task就是在此處分配的。

技術分享圖片

Spark任務提交方式和執行流程