Spark 运行模式整理
Spark 运行模式概述
Spark 在集群中可以运行的模式大致分为以下两种:
- 单机模式:仅依赖于单个节点进行任务调度和资源管理。
- 集群模式:依赖于多个节点的分布式系统,进行任务的分配和资源的调度。
部署方式
部署方式:软件安装到什么位置
- 单机模式:
- 如果系统仅在一个节点上运行,则为单机模式,主要用于小型测试或开发环境。
- 分布式模式:
- 系统利用多个节点的资源来进行任务分配,常见的分布式模式包括:
- YARN 部署环境:资源由 Hadoop 的 YARN 提供,Spark 作为应用运行在 YARN 上,这种模式通常称为 Spark on YARN。
- Spark Standalone 部署环境:资源由 Spark 自带的 Standalone 调度器提供,适用于较小规模的集群。
- 系统利用多个节点的资源来进行任务分配,常见的分布式模式包括:
- 云平台模式
- Kubernetes上运行
Spark 支持的具体部署模式
-
Local 模式:
- 该模式主要用于本地开发和测试。
- Spark 在本地运行单个进程,不涉及集群的概念。
- 适合小规模的作业和调试任务。
-
Standalone 模式:
- 这是 Spark 自带的任务调度模式。
- 由 Spark 本身提供资源调度的功能,可以将集群资源用于任务执行。
- 在国内的生产环境中不常用,但在小型集群中可以作为独立的调度方式。
-
YARN 模式:
- Spark 依赖 Hadoop 的 YARN 组件进行资源与任务的调度。
- 这是国内生产环境中最常见的部署模式,广泛应用于大规模分布式系统中。
- YARN 通过解耦合资源管理与计算,提供灵活性和可扩展性。
-
Mesos 模式:
- Spark 使用 Mesos 平台进行资源调度和任务管理。
- 虽然具有较高的扩展性和灵活性,但在国内的应用较为少见。
-
生产环境中常用部署模式
- 在生产环境中,主要采用 YARN + Spark 的模式,这种组合也称为 Spark On YARN。YARN 作为 Hadoop 生态系统的一部分,负责资源管理,而 Spark 则专注于数据处理和计算任务。
Yarn 的历史与发展
-
Hadoop 1.x:
在早期的 Hadoop 版本中,MapReduce 计算框架和资源管理耦合在一起。资源调度和作业调度都依赖于 MapReduce 本身,这种模式在面对大规模任务时有一定的局限性。 -
Hadoop 2.x(YARN):
从 Hadoop 2.x 版本开始,引入了 YARN(Yet Another Resource Negotiator),将资源调度和作业调度解耦合。
YARN 成为资源管理的核心,负责调度集群资源,而不同的计算框架(如 Spark、MapReduce 等)可以运行在 YARN 上。
1. Spark框架中的角色
- YARN 角色回顾
资源管理层
- 集群资源管理者(Matser):ResourceManager
- 单机资源管理者(Woker):NodeManager
任务计算层
- 单任务管理者(Master):ApplicationMaster
- 单任务执行者(Woker):Task(容器内计算框架的工作角色)

Yarn角色图
- Spark 角色
资源管理层
- 集群资源管理者(Matser):Master
- 单机资源管理者(Woker):Woker
任务计算层
- 单任务管理者(Master):Driver
- 单任务执行者(Woker):Executor

Spark角色图
正常情况下Executor是干活的角色,不过在特殊场景下(Local模式)Driver可以即是管理又是执行