spark運行模式

Local模式

運行Spark最簡單的方法是經過Local模式(即僞分佈式模式)。apache

    運行命令爲:./bin/run-example org.apache.spark.examples.SparkPi local架構

基於standalone的Spark架構與做業執行流程

Standalone模式下,集羣啓動時包括Master與Worker,其中Master負責接收客戶端提交的做業,管理Worker。提供了Web展現集羣與做業信息。分佈式

提交做業有兩種方式,分別是Driver(做業的master,負責做業的解析、生成stage並調度task到,包含DAGScheduler)運行在Worker上,Driver運行在客戶端。接下來分別介紹兩種方式的做業運行原理。url

Driver運行在Worker上

    經過org.apache.spark.deploy.Client類執行做業,做業運行命令以下:spa

        ./bin/spark-class org.apache.spark.deploy.Client launch spark://host:port file:///jar_url org.apache.spark.examples.SparkPi spark://host:port.net

    做業執行流如圖1所示。線程

                                                       圖1進程

做業執行流程描述:get

  1. 客戶端提交做業給Masterspark

  2. Master讓一個Worker啓動Driver,即SchedulerBackend。Worker建立一個DriverRunner線程,DriverRunner啓動SchedulerBackend進程。

  3. 另外Master還會讓其他Worker啓動Exeuctor,即ExecutorBackend。Worker建立一個ExecutorRunner線程,ExecutorRunner會啓動ExecutorBackend進程。

  4. ExecutorBackend啓動後會向Driver的SchedulerBackend註冊。SchedulerBackend進程中包含DAGScheduler,它會根據用戶程序,生成執行計劃,並調度執行。對於每一個stage的task,都會被存放到TaskScheduler中,ExecutorBackend向SchedulerBackend彙報的時候把TaskScheduler中的task調度到ExecutorBackend執行。

  5. 全部stage都完成後做業結束。

Driver運行在客戶端

    直接執行Spark做業,做業運行命令以下(示例):

        ./bin/run-example org.apache.spark.examples.SparkPi spark://host:port

    做業執行流如圖2所示。

                                                        圖2

做業執行流程描述:

  1. 客戶端啓動後直接運行用戶程序,啓動Driver相關的工做:DAGScheduler和BlockManagerMaster等。

  2. 客戶端的Driver向Master註冊。

  3. Master還會讓Worker啓動Exeuctor。Worker建立一個ExecutorRunner線程,ExecutorRunner會啓動ExecutorBackend進程。

  4. ExecutorBackend啓動後會向Driver的SchedulerBackend註冊。Driver的DAGScheduler解析做業並生成相應的Stage,每一個Stage包含的Task經過TaskScheduler分配給Executor執行。

  5. 全部stage都完成後做業結束。

基於Yarn的Spark架構與做業執行流程

這裏Spark AppMaster至關於Standalone模式下的SchedulerBackend,Executor至關於standalone的ExecutorBackend,spark AppMaster中包括DAGScheduler和YarnClusterScheduler。

    Spark on Yarn的執行流程能夠參考 http://www.csdn.net/article/2013-12-04/2817706--YARNspark on Yarn部分。    

相關文章
相關標籤/搜索