Spark中的相关术语介绍

1、Master 和 Worker

在大数据框架中,一般都会有主节点和从节点的概念。主节点负责资源管理和任务调度,从节点负责执行计算并向主节点汇报工作状态。这里的Master代表的就是主节点,Worker代表的就是从节点。Master和Worker是基于物理机器的概念,一般说maser或者Worker代表的就是物理机器,对应的是Hadoop中的Master和slave的概念。

一般来说会使用不同机器来充当Master和Worker,但是在特定情况下(比如单机模式)会让一台机器同时充当Master和Worker。

2、Driver 和 Executor

Driver是执行开发程序中的main方法的进程。它负责创建SparkContext、创建RDD,以及进行RDD的transformation操作和action操作代码的执行。有时候说的驱动程序指的就是Driver。主要负责:

    1. 把用户程序转为作业(Job)
    2. 跟踪Executor的运行状况
    3. 为执行器节点调度任务
    4. UI展示应用运行状况

Executor是Worker中的一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用(Application)启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:

    1. 负责运行组成 Spark 应用的任务(Task),并将结果返回给驱动器进程;
    2. 通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

3、Application(应用)

运行于Spark上的用户程序,由集群上的一个Driver和多个Executor组成。初始化一个SparkContext就生成一个APPlication,说白了Application就是main方法中的内容。

4、Job(作业)

一个action算子会产生一个Job。

5、Stage(阶段)

根据RDD之间依赖关系的不同将Job划分成不同的Stage(阶段),每遇到一个宽依赖就划分一个Stage。Stage的总数等于shuffle的个数加1(就好比一个点可以将线段分为两份,两个点可以分为三份,三个点可以分为四份一样)。

6、Task(任务)

Stage是一个TaskSet,将Stage划分的结果发送到不同的Executor执行即为一个Task。同一个Stage中的Task数量等于当前Stage最后产生的RDD的分区数。

由于一个Application中可以有多个action算子,所以一个Application中可以有多个Job;一个Job中可能会涉及到多个shuffle操作,每次shuffle可能会产生宽依赖,所以一个Job可以有多个Stage;而Stage又是多个Task组成的集合。因此Application  > Job > Stage > Task之间是一对多的关系,层层传递。

如图,在一个Spark集群中,会有多台Worker节点出现,开发人员将打包好的Application程序上传到Master节点,并通过Spark的相关提交命令提交。之后就会在Master上启动一个Driver进程来创建SparkContext对象。Master通过中间的Cluster Manager(集群管理工具,例如Yarn、Mesos或者Spark自带的调度器)和各个Worker通信,并将相关的计算任务分发给Worker节点。Worker节点收到任务之后会启动Executor进程执行计算任务。Worker所执行的任务中可能会包含多个Job(因为可能有多个action算子),如果涉及到shuffle操作的话还会有多个Stage,当然Stage中会包含Task。最后,Worker节点将计算结果返回给Master中的Driver。

点个赞呗:程序员虾说 » Spark中的相关术语介绍

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

请作者喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏