本文目录如下:
- 第7章 Spark核心组件
- 7.1 运行架构
- 7.2 核心组件
- 7.2.1 Driver
- 7.2.2 Executor
- 7.2.3 Master & Worker
- 7.2.4 ApplicationMaster
- 7.3 核心概念
- 7.3.1 Executor 与 Core
- 7.3.2 有向无环图
- 7.4 提交流程
- 7.4.1 Yarn Client 模式
- 7.4.2 `Yarn Cluster 模式`(重要)
第7章 Spark核心组件
7.1 运行架构
Spark
是一种快速的内存数据处理引擎,整体来说,它采用了标准主从结构。 如下图所示.图形中的Driver
表示’主
’,负责管理整个集群中的作业任务调度。图形中的Executor
则是 ‘从
’,负责实际执行任务。
7.2 核心组件
由上图可以看出,Spark 框架有两个核心组件:Driver
和 Executor
。
7.2.1 Driver
Driver
用于执行 Spark 任务中的 main方法
,负责实际代码的执行工作。Driver
在 Spark 作业执行时主要负责:
- 将用户程序转化为
作业(job)
- 在
Executor
之间调度任务(task)
- 跟踪
Executor
的执行情况
简单理解,Driver
就是驱使整个应用运行起来的程序,也称之为Driver 类。
7.2.2 Executor
Executor
是集群中工作节点(Worker)
中的一个 JVM 进程,负责在 Spark 作业中运行具体任务(Task)
,任务彼此之间相互独立。Executor
有两个核心功能:
- 运行组成 Spark 应用的任务,并将结果返回给
Driver
- 通过自身的
块管理器(Block Manager)
为用户程序中要求缓存的RDD
提供内存式存储。RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
7.2.3 Master & Worker
Spark 集群的独立部署环境中,不需要依赖其他的资源调度框架,自身就实现了资源调
度的功能,所以环境中还有其他两个核心组件:Master 和 Worker。
-
Master
是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责,类似于 Yarn 环境中的ResourceNameNode
, -
Worker
也是进程,一个 Worker 运行在集群中的一台服务器上,由 Master 分配资源对数据进行并行的处理和计算,类似于 Yarn 环境中NodeManager
。
7.2.4 ApplicationMaster
ResourceManager
(资源) 和 Driver
(计算) 之间的解耦合靠的就是ApplicationMaster
。
7.3 核心概念
7.3.1 Executor 与 Core
-
Executor
是集群中运行在工作节点(Worker)
中的一个 JVM 进程,是整个集群中的专门用于计算的节点。在提交应用中,可以提供参数指定计算节点的个数,以及对应的资源。这里的资源一般指的是工作节点 Executor 的内存大小和使用的虚拟CPU核(Core)
数量。 - 应用程序相关启动参数如下:
名称 | 说明 |
–num-executors | 配置 Executor 的数量 |
–executor-memory | 配置每个 Executor 的内存大小 |
–executor-cores | 配置每个 Executor 的虚拟 CPU core 数量 |
7.3.2 有向无环图
- 略…
7.4 提交流程
所谓的提交流程,其实就是我们开发人员根据需求写的应用程序通过 Spark客户端
提交给 Spark
运行环境执行计算的流程。本课程中的提交流程是基于 Yarn
环境的。
Spark 应用程序提交到 Yarn 环境中执行的时候,一般会有两种部署执行的方式:Client
和 Cluster
。
- 两种模式主要区别在于:Driver 程序的运行节点位置。
7.4.1 Yarn Client 模式
Client 模式
将用于监控和调度的 Driver模块
在客户端执行,而不是在 Yarn 中,所以一般用于测试。
- Driver 在任务提交的本地机器上运行
- Driver 启动后会和
ResourceManager
通讯申请启动ApplicationMaster
-
ResourceManager
分配container
,在合适的NodeManager
上启动ApplicationMaster
,负责向ResourceManager
申请Executor 内存
-
ResourceManager
接到ApplicationMaster
的资源申请后会分配container
,然后ApplicationMaster
在资源分配指定的NodeManager
上启动Executor
进程 -
Executor
进程启动后会向Driver
反向注册,Executor 全部注册完成后 Driver 开始执行main 函数
- 之后执行到
Action 算子
时,触发一个Job
,并根据宽依赖开始划分stage
,每个 stage 生成对应的TaskSet
,之后将 task 分发到各个Executor
上执行。
7.4.2 Yarn Cluster 模式
(重要)
Cluster 模式
将用于监控和调度的 Driver 模块启动在 Yarn
集群资源中执行。一般应用于实际生产环境。
- 在 YARN Cluster 模式下,任务提交后会和
ResourceManager
通讯申请启动ApplicationMaster
, - 随后
ResourceManager
分配container
,在合适的NodeManager
上启动ApplicationMaster
,此时的ApplicationMaster
就是Driver
。 -
Driver
启动后向ResourceManager
申请 Executor 内存,ResourceManager
接到ApplicationMaster
的资源申请后会分配container
,然后在合适的NodeManager
上启动Executor
进程 -
Executor
进程启动后会向Driver
反向注册,Executor
全部注册完成后Driver
开始执行main 函数
, - 之后执行到
Action 算子
时,触发一个Job
,并根据宽依赖开始划分stage
,每个stage
生成对应的TaskSet
,之后将 task 分发到各个Executor
上执行。