Spark 的幾種運行模式

1.測試或實驗性質的本地運行模式(單機)web

  • 該模式被稱爲Local[N]模式,是用單機的多個線程來模擬Spark分佈式計算,一般用來驗證開發出來的應用程序邏輯上有沒有問題。其中N表明可使用N個線程,每一個線程擁有一個core。若是不指定N,則默認是1個線程(該線程有1個core)。
  • 指令示例:shell

    1)spark-shell --master local 效果是同樣的併發

    2)spark-shell --master local[4] 表明會有4個線程(每一個線程一個core)來併發執行應用程序。app

  • 運行該模式很是簡單,只須要把Spark的安裝包解壓後,改一些經常使用的配置便可使用,而不用啓動Spark的Master、Worker守護進程( 只有集羣的Standalone方式時,才須要這兩個角色),也不用啓動Hadoop的各服務(除非你要用到HDFS),這是和其餘模式的區別,要記住才能理解。框架

2.測試或實現性質的本地僞集羣運行模式(單機模擬集羣)分佈式

  • 這種運行模式,和Local[N]很像,不一樣的是,它會在單機啓動多個進程來模擬集羣下的分佈式場景,而不像Local[N]這種多個線程只能在一個進程下委屈求全的共享資源。一般也是用來驗證開發出來的應用程序邏輯上有沒有問題,或者想使用Spark的計算框架而沒有太多資源。oop

  • 指令示例:測試

    1)spark-shell --master local-cluster[2, 3, 1024]ui

  • 用法是:提交應用程序時使用local-cluster[x,y,z]參數:x表明要生成的executor數,y和z分別表明每一個executor所擁有的core和memory數。spa

  • 該模式依然很是簡單,只須要把Spark的安裝包解壓後,改一些經常使用的配置便可使用。而不用啓動Spark的Master、Worker守護進程( 只有集羣的standalone方式時,才須要這兩個角色),也不用啓動Hadoop的各服務(除非你要用到HDFS),這是和其餘模式的區別哦,要記住才能理解。

3.spark自帶Cluster Manager的standalone Client模式(集羣)

  • 和單機運行的模式不一樣,這裏必須在執行應用程序前,先啓動Spark的Master和Worker守護進程。不用啓動Hadoop服務,除非你用到了HDFS的內容。能夠在想要作爲Master的節點上用start-all.sh一條命令便可,這種運行模式,可使用Spark的8080 web ui來觀察資源和應用程序的執行狀況了。用以下命令提交應用程序
  • 指令示例:

    1)spark-shell --master spark://wl1:7077

    或者

    2)spark-shell --master spark://wl1:7077 --deploy-mode client

  • 產生的進程:

    ①Master進程作爲cluster manager,用來對應用程序申請的資源進行管理

    ②SparkSubmit 作爲Client端和運行driver程序

    ③CoarseGrainedExecutorBackend 用來併發執行應用程序

4.spark 自帶Cluster manager 的Standalone cluster模式(集羣)

  • 這種運行模式和上面第3個仍是有很大的區別的。使用以下命令執行應用程序
  • 指令示例:

    1)spark-submit --master spark://wl1:6066 --deploy-mode cluster

第4種模式和第3種模型的區別:

①客戶端的SparkSubmit進程會在應用程序提交給集羣以後就退出

②Master會在集羣中選擇一個Worker進程生成一個子進程DriverWrapper來啓動driver程序

③而該DriverWrapper 進程會佔用Worker進程的一個core,因此一樣的資源下配置下,會比第3種運行模式,少用1個core來參與計算

④應用程序的結果,會在執行driver程序的節點的stdout中輸出,而不是打印在屏幕上

 

5.基於YARN的Resource Manager 的Client 模式(集羣)

  • 如今愈來愈多的場景,都是Spark跑在Hadoop集羣中,因此爲了作到資源可以均衡調度,會使用YARN來作爲Spark的Cluster Manager,來爲Spark的應用程序分配資源。在執行Spark應用程序前,要啓動Hadoop的各類服務。因爲已經有了資源管理器,因此不須要啓動Spark的Master、Worker守護進程。

    使用以下命令執行應用程序:

  • 指令示例:

    1)spark-shell --master yarn 

    或者

    2)spark-shell --master yarn --deploy-mode client

  • 提交應用程序後,各節點會啓動相關的JVM進程,以下:

    ①在Resource Manager節點上提交應用程序,會生成SparkSubmit進程,該進程會執行driver程序。

    ②RM會在集羣中的某個NodeManager上,啓動一個ExecutorLauncher進程,來作爲ApplicationMaster。

    ③另外,RM也會在多個NodeManager上生成CoarseGrainedExecutorBackend進程來併發的執行應用程序。

6.基於YARN的Resource Manager 的 Cluster 模式(集羣)

 

  • 指令示例:

        1)spark-shell --master yarn --deploy-mode cluster

和第5種運行模式,區別以下:

  • ①在Resource Manager端提交應用程序,會生成SparkSubmit進程,該進程只用來作Client端,應用程序提交給集羣后,就會刪除該進程。
  • ②Resource Manager在集羣中的某個NodeManager上運行ApplicationMaster,該AM同時會執行driver程序。緊接着,會在各NodeManager上運行CoarseGrainedExecutorBackend來併發執行應用程序。
  • ③應用程序的結果,會在執行driver程序的節點的stdout中輸出,而不是打印在屏幕上。

此外,還有Spark On  Mesos模式 能夠參閱:

http://ifeve.com/spark-mesos-spark/

相關文章
相關標籤/搜索