Spark概念理解

一、整體結構

1、 Application

每一次通過Spark-submit命令提交的Jar包,都可以看成一個Spark應用程序。它是集羣資源器調度的基本單位,一個應用程序對應一個驅動程序。

用戶程序,如計算PI的值,統計數據報表等


2、Driver Program

驅動程序就是執行了一個Spark Application的main函數和創建Spark Context的進程,它包含了這個application的全部代碼。

問題:Driver是跑在哪個節點上,對應到U服務呢?


3.Master節點
運行Master守護進程的集羣節點,管理整個集羣,一個集羣中,只有一個Active的Master節點。Master節點有兩個用途:一是應用程序的調度,對用戶提交的應用程序,進行執行先後順序的調度;二是資源調度,由於集羣的資源實際是指Worker節點上的計算和內存資源,因此Master節點是對Worker節點進行資源上的調度。

問題:和YARN有什麼關係?


4.Worker節點
運行Worker守護進程的集羣節點,是集羣資源的貢獻節點,一個Worker內部可以包含多個Executor。一個集羣中,Worker節點一般會有多個,並且受到Master節點的管理。

就是計算節點。


5.任務執行器(Executor)

Worker節點上執行任務的地方,一個Worker節點可能有多個Executor,每個Executor都擁有固定的核心數量和堆棧大小,並維護一個線程池,池中每一個線程用於執行一個任務。

問題:如何確定Executor個數?

具體實例:60臺計算節點,處理120Executor,平均每臺包含2個Excutor,可能也會有幾臺包含了3個,有些只包含一個。

在U服務中,固定分配Executor的CPU及內存資源,及1Cu,隊列包含了Cu個數;通過選擇隊列可指定Executor相關信息,如A隊列包含了3Cu,則會分配3個Executor。


問題:Excutor與task之間的關係?

task被分配到executor上去執行。executor可以先事先分配好,不退出,也可以每次提交任務時在去創建。U服務是事先分配好。



6.作業(Job)

一個Action對應一個作業;

RDD數據的計算是惰性的,在遇到動作操作之前,RDD內部的數據不會真正的被計算。從第一個RDD到最後一個動作RDD這一整套計算流程,稱爲一個作業。一個Spark應用程序會包含多個作業,但作業之間是相互獨立的,因而僅靠了一個作業內部的調度過程即可。


7.階段(Stage)

計算鏈內從任意一個或多個連接在一起的RDD到末尾最後一個RDD(Final RDD)內部所有分區數據被計算出來時候的狀態,都可以視爲一個階段。Spark是根據Shuffle依賴來劃分階段,階段劃分後,RDD的計算鏈也被切斷。

問題:多個Stage是否能夠併發執行?


問題:shuffle是什麼?會做什麼?


8.任務集(Task Set)和任務(Task)

每一個階段內部包含多個可以併發執行的任務,這裏把同一個階段內的任務彙總在一起,稱爲一個任務集。任務集是DAG調度器交付給任務調度器的基本單位;

task是依據Partation進行劃分的,每個Partation對應一個task,一個任務可能包含了多個transfrom操作;


http://blog.csdn.net/zhumr/article/details/52518506

待續。。。。


4、stage是如何分解成task




二、RDD

1、RDD


三、shuffle

http://blog.csdn.net/zhumr/article/details/52540994

http://blog.csdn.net/hao707822882/article/details/40581515


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章