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部分。    

相关文章
相关标签/搜索