本文目录如下:

  • 第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 则是 ‘’,负责实际执行任务。

spark中driver内存是用来干嘛 spark driver的作用_spark


7.2 核心组件

由上图可以看出,Spark 框架有两个核心组件:DriverExecutor

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中driver内存是用来干嘛 spark driver的作用_hadoop_02


Spark 应用程序提交到 Yarn 环境中执行的时候,一般会有两种部署执行的方式:ClientCluster

  • 两种模式主要区别在于: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 上执行。