spark架构与作业执行流程

spark相关术语

  1. Application
    指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码;

  2. Driver
    Spark中的Driver即运行上述Application的main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭。通常用SparkContext代表Driver;

  3. Executor
    Application运行在Worker 节点上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor。

  4. Cluster Manager
    指的是在集群上获取资源的外部服务,目前有3种方式

  5. Worker
    集群中任何可以运行Application代码的节点。

  6. Job
    包含多个Task组成的并行计算,往往由Spark Action催生,一个JOB包含多个RDD及作用于相应RDD上的各种Operation;

  7. stage
    每个Job会被拆分很多组Task,每组任务被称为Stage,也可称TaskSet,一个作业分为多个阶段;

  8. Task
    被送到某个Executor上的工作任务;


    spark架构与作业执行流程_第1张图片
    111609254102564.gif

Spark集群模式架构

spark架构与作业执行流程_第2张图片
集群架构图

上图中,Spark集群Cluster Manager目前支持如下三种模式:
1. Standalone模式
Standalone模式是Spark内部默认实现的一种集群管理模式,这种模式是通过集群中的Master来统一管理资源,而与Master进行资源请求协商的是Driver内部的StandaloneSchedulerBackend(实际上是其内部的StandaloneAppClient真正与Master通信),后面会详细说明。
2. YARN模式
YARN模式下,可以将资源的管理统一交给YARN集群的ResourceManager去管理,选择这种模式,可以更大限度的适应企业内部已有的技术栈,如果企业内部已经在使用Hadoop技术构建大数据处理平台。
3. Mesos模式
随着Apache Mesos的不断成熟,一些企业已经在尝试使用Mesos构建数据中心的操作系统(DCOS),Spark构建在Mesos之上,能够支持细粒度、粗粒度的资源调度策略(Mesos的优势),也可以更好地适应企业内部已有技术栈。

1.基于standalone模式下的spark架构

1.1 角色介绍
  • Client:客户端进程,负责提交作业到Master。
  • Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor。
  • Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。
  • Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。
  • Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。
1.2作业相关的名词
  • Stage:一个Spark作业一般包含一到多个Stage。
  • Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。
  • DAGScheduler: 实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。
  • TaskScheduler:实现Task分配到Executor上执行。
1.3 提交作业的方式

提交作业有两种方式分别是:

  1. Driver运行在Worker上(作业的master,负责作业的解析、生成stage并调度task到,包含DAGScheduler)
  2. Driver运行在client上 。
方式1:Driver运行在Worker上
spark架构与作业执行流程_第3张图片
111334483727486.png
方式2:Driver运行在Client上
spark架构与作业执行流程_第4张图片
111334487788428.png

你可能感兴趣的:(spark架构与作业执行流程)