MAPREDUCE服务 MRS-Spark基本原理:Spark应用运行原理

时间:2023-11-07 14:09:49

Spark应用运行原理

Spark的应用运行架构如图 Spark应用运行架构所示,运行流程如下所示:

  1. 应用程序(Application)是作为一个进程的集合运行在集群上的,由Driver进行协调。
  2. 在运行一个应用时,Driver会去连接集群管理器(Standalone、Mesos、YARN)申请运行Executor资源,并启动ExecutorBackend。然后由集群管理器在不同的应用之间调度资源。Driver同时会启动应用程序DAG调度、Stage划分、Task生成。
  3. 然后Spark会把应用的代码(传递给SparkContext的JAR或者Python定义的代码)发送到Executor上。
  4. 所有的Task执行完成后,用户的应用程序运行结束。
图2 Spark应用运行架构

Spark采用Master和Worker的模式,如图 Spark的Master和Worker所示。用户在Spark客户端提交应用程序,调度器将Job分解为多个Task发送到各个Worker中执行,各个Worker将计算的结果上报给Driver(即Master),Driver聚合结果返回给客户端。

图3 Spark的Master和Worker

在此结构中,有几个说明点:

  • 应用之间是独立的。

    每个应用有自己的executor进程,Executor启动多个线程,并行地执行任务。无论是在调度方面,或者是executor方面。各个Driver独立调度自己的任务;不同的应用任务运行在不同的JVM上,即不同的Executor。

  • 不同Spark应用之间是不共享数据的,除非把数据存储在外部的存储系统上(比如HDFS)。
  • 因为Driver程序在集群上调度任务,所以Driver程序建议和worker节点比较近,比如在一个相同的局部网络内。

Spark on YARN有两种部署模式:

  • yarn-cluster模式下,Spark的Driver会运行在YARN集群内的ApplicationMaster进程中,ApplicationMaster已经启动之后,提交任务的客户端退出也不会影响任务的运行。
  • yarn-client模式下,Driver启动在客户端进程内,ApplicationMaster进程只用来向YARN集群申请资源。
support.huaweicloud.com/productdesc-mrs/mrs_08_000801.html