栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark 架构及运行流程

Spark 架构及运行流程

1. Spark 架构

Spark 遵循主从架构,即集群中由一个主服务器和若干个从服务器组成。

Spark 架构基于两个抽象:

  • RDD:弹性分布式数据集
  • DAG:有向无环图
1.1 Spark 运行架构

Spark 运行架构中包括:

  • 集群资源管理器(Cluster Manager)
  • Spark 驱动节点(Driver)
  • 若干个工作节点(Worker Node)
1.2 Spark 组件

 Application:

Spark Application 包含了一个 Driver 及多个 Executor。

 Driver:

Spark 驱动节点,Driver 运行 Spark Application 的 main() 方法,创建SparkContext。SparkContext 负责和 Cluster Manager 通信,进行资源申请、任务分配和监控等。

Driver 在 Spark 作业执行时负责:

  1. 将用户程序转换为作业(Job)
  2. 在 Executor 之间调度任务(Task)
  3. 跟踪 Executor 的执行情况
  4. 通过 UI 展示查询 运行情况

 Cluster Manager:

Cluster Manager 在 Standalone 模式中为 Master 节点,在 YARN 模式中为 Hadoop YARN Cluster Manager,在 Mesos 中为 Mesos Cluster Manager。Cluster Manager 负责声请和管理在 Worker Node 上运行应用所需的资源。

 Executor:

Executor 为集群上的工作节点(Worker Node)中的 JVM 进程,负责运行 Task。Spark Application 启动时,Executor 被同时启动,并且伴随整个 Spark Application 的生命周期。

Executor 的两个核心功能:

  • 负责运行组成 Spark Application 的 Task,并将结果返回给 Driver
  • Executor 通过自身的块管理器(Block Manager)为 Application 中要求缓存的 RDD 提供内存存储(RDD 是直接缓存在 Executor 进程内,一次任务可以在运行时利用缓存数据加速运算)

 Master & Worker:

Spark 集群的独立部署环境中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能。Master 是一个进程,负责资源的调度和分配,并进行集群的监控等职责;Worker 也是一个进程,一个 Worker 运行在集群中的一台服务器上,由 Master 分配资源对数据进行并行处理和计算。

Master 相当于 YARN 的 RM,Worker 相当于 YARN 的 NM

 Application Master:

Hadoop 用户向 YARN 集群提交 Application 时,提交程序中包含 Application Master,用于向资源管理器申请执行任务的资源容器 Container,运行用户自己的任务(Job),监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况。

ResourceManager 和 Driver 之间的解耦合靠的就是 Application Master!

1.3 有向无环图

DAG(Directed Acyclic Graph):有向无环图,是由点和线组成的拓扑图,具有方向且不会闭环。运行每个 Applicaiotn 都会构建基于 Stage(TaskSet)的 DAG。

2. 运行流程

1️⃣ Step1:构建 Spark Application 运行环境,启动 SparkContext;

2️⃣ Step2:SparkContext 向 Cluster Manager 注册,并申请 Executor 资源;

3️⃣ Step3:Master 根据 SparkContext 资源申请的要求和 Worker 心跳周期报告的信息决定在哪个 Worker 上分配资源,在相应的 Worker 上获取西元后,启动 StandaloneExecutorbackend;

4️⃣ Step4:StandaloneExecutorBackend 向 SparkContext 注册;

5️⃣ Step5:SparkContext 将 Application 分发给 Executor;

6️⃣ Step6:SparkContext 解析 Application ,构建 DAG 图,并交给 DAG Scheduler 分解成多个 Stage,

7️⃣ Step7:SparkContext 把每个 TaskSet(任务集)发送给 Task Scheduler (任务调度器);

8️⃣ Step8:Executor 向 SparkContext 申请 Task,Task Scheduler 将 Task 发放给 Executor;同时,SparkContext 将应用程序代码发放给 Executor;

9️⃣ Step9:Task 在 Executor 上由 StandaloneExecutorBackend 运行,StandaloneExecutorBackend 会建立 Executor 线程池,开始执行Task;

1️⃣0️⃣ Step10:执行结果将反馈给 Task Scheduler,然后再反馈给 DAG Scheduler;

1️⃣1️⃣ Step11:Task 运行完毕后写入数据,SparkContext 向 ClusterManager 注销并释放所有资源。

 


❤️ END ❤️
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650827.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号