Spark應用的結構

承接上一篇文檔《Standalone集群搭建和Spark應用監控

需要了解的概念

一、Spark應用的結構(Driver + Executors)

(一)、Driver:相當於MapReduce中ApplicationMaster,運行SparkContext上下文、SparkContext進行初始化的地方(JVM)、進行RDD的初始化、Task運行的資源申請、調度的地方,一般認為就是main運行的地方

(二)、Executors:具體的Task運行的地方,一個executor可以運行多個Task任務,一個spark應用可以有多個Executor

Spark應用的結構

練習:

1、 local模式下沒有啟動SparkShell的情況下查看jps


Spark應用的結構

2、 local模式下啟動SparkShell的情況下查看jps

Spark應用的結構

Spark應用的結構

3、 啟動集群模式查看jps

Spark應用的結構

Spark應用的結構

結論:

1、local模式:driver和executor運行在同一個進程(SparkSubmit),以線程的方式進行區分的。

2、集群模式:

Driver:SparkSubmit

Executor:CoarseGrainedExecutorBackend


練習:分別查看spark-shell和spark-submit命令可以找到下面的語句

1、 spark-shell底層運行的是spark-submit

Spark應用的結構

2、 spark-submit底層執行的是spark-class

Spark應用的結構


結論:每運行一個spark-submit,就相當於執行了一個Spark的Application


練習:

1、 執行詞頻統計前十(參考前面的課件)的語句(不執行collect),在瀏覽器查看ip:4040/jobs

Spark應用的結構

Spark應用的結構

2、 執行詞頻統計前十(參考前面的課件)的語句(執行collect),在瀏覽器查看ip:4040/jobs

Spark應用的結構

Spark應用的結構

Spark應用的結構


3、 再執行一次上面的第二步,可以多運行幾次查看


結論:Application,一個應用包含多個job


練習:點擊ip:4040/jobs中的多個job,查看裡面的信息

Spark應用的結構

結論:一個Job裡面包含多個Stage


練習:點擊ip:4040/jobs中的多個Stage,查看裡面的信息

Spark應用的結構

Spark應用的結構

結論:一個Stage裡面可以包含多個Task。可以在詞頻統計前十中調用partition,查看分區個數,分區多數多的話 就可以有多個Task了


其中上面的結論補充(詳細解釋在後面慢慢講解):

1、RDD的action類型的API一旦觸發就會產生一個job,比如collect、take(10)、

2、有shuffle操作就會劃分stage

3、Task就是最小的運行單位,是在executor處理對應分區數據的線程


分享到:


相關文章: