图文详解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 的工作职责

  1. 通过注册机制向 Cluster Manager汇报自身的 CPU 和内存等资源使用信息;
  2. 在 Master 的指示下,创建并启动 Executor(真正的计算单元);
  3. 将资源和任务进一步分配给 Executor 并运行;
  4. 同步资源信息和 Executor 状态信息给 Cluster Manager。

Driver 的工作职责

Application 通过 Driver 与 Cluster Manager 和 Executor 进行通信。

  1. 运行 Application 的 main() 函数;
  2. 创建 SparkContext;
  3. 划分 RDD 并生成 DAG;
  4. 构建 Job 并将每个 Job 都拆分为多个 Stage,每个 Stage 由多个 Task 构成,也被称为 Task Set;
  5. 与 Spark 中的其他组件进行资源协调;
  6. 生成并发送 Task 到 Executor。

以上是本期分享,如有帮助请大家记得 点赞+关注+收藏 支持下哦~
下期开始讲解 Spark Core 相关内容。

前期回顾:

1 - Spark 概述(入门必看)
2 - Spark 的模块组成
3 - Spark 的运行原理
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>