图文详解Spark的运行原理(入门必看)
前言
上期文章,介绍了 Spark 是包含多个紧密集成的组件,这些组件结合密切并且可以相互调用,这样我们可以像在平常软件项目中使用程序库一样,组合使用这些的组件。
本期学习目标
- Spark 的运行模式
- Spark 的集群架构
- Worker 的工作职责
- Driver 的工作职责
Spark的运行模式
就底层而言,Spark 设计为可以高效地在一个到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器上运行。
Spark 的运行模式主要有:
- Local 模式 :学习测试使用,分为 Local 单线程和 Local-Cluster 多线程两种方式;
- Standalone 模式 :学习测试使用,在 Spark 自己的资源调度管理框架上运行;
- ON YARN :生产环境使用,在 YARN 资源管理器框架上运行,由 YARN 负责资源管理,Spark 负责任务调度和计算;
- ON Mesos :生产环境使用,在 Mesos 资源管理器框架上运行,由 Mesos 负责资源管理,Spark 负责任务调度和计算;
- On Cloud :运行在 AWS、阿里云、华为云等环境。
Spark的集群架构
Spark 的集群架构主要由 Cluster Manager(资源管理器)、Worker (工作节点)、Executor(执行器)、Driver(驱动器)、Application(应用程序) 5部分组成,如下图:
- Cluster Manager :Spark 集群管理器,主要用于整个集群资源的管理和分配,有多种部署和运行模式;
- Worker :Spark 的工作节点,用于执行提交的任务;
- Executor :真正执行计算任务的一个进程,负责 Task 的运行并且将运行的结果数据保存到内存或磁盘上;
- Driver :Application 的驱动程序,可以理解为驱动程序运行中的 main() 函数,Driver 在运行过程中会创建 Spark Context;
- Application :基于 Spark API 编写的应用程序,包括实现 Driver 功能的代码和在集群中多个节点上运行的 Executor 代码。
Worker 的工作职责
- 通过注册机制向 Cluster Manager汇报自身的 CPU 和内存等资源使用信息;
- 在 Master 的指示下,创建并启动 Executor(真正的计算单元);
- 将资源和任务进一步分配给 Executor 并运行;
- 同步资源信息和 Executor 状态信息给 Cluster Manager。
Driver 的工作职责
Application 通过 Driver 与 Cluster Manager 和 Executor 进行通信。
- 运行 Application 的 main() 函数;
- 创建 SparkContext;
- 划分 RDD 并生成 DAG;
- 构建 Job 并将每个 Job 都拆分为多个 Stage,每个 Stage 由多个 Task 构成,也被称为 Task Set;
- 与 Spark 中的其他组件进行资源协调;
- 生成并发送 Task 到 Executor。
以上是本期分享,如有帮助请大家记得 点赞+关注+收藏 支持下哦~
下期开始讲解 Spark Core 相关内容。
前期回顾: