大数据 - Spark系列《十五》- spark架构

Spark系列文章:

大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客

大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客

大数据 - Spark系列《四》- Spark分布式运行原理-CSDN博客

大数据 - Spark系列《五》- Spark常用算子-CSDN博客

大数据 - Spark系列《六》- RDD详解-CSDN博客

大数据 - Spark系列《七》- 分区器详解-CSDN博客

大数据 - Spark系列《八》- 闭包引用-CSDN博客

大数据 - Spark系列《九》- 广播变量-CSDN博客

大数据 - Spark系列《十》- rdd缓存详解-CSDN博客

大数据 - Spark系列《十一》- Spark累加器详解-CSDN博客

大数据 - Spark系列《十二》- 名词术语理解-CSDN博客

大数据 - Spark系列《十三》- spark调度流程(运行过程)-CSDN博客

大数据 - Spark系列《十四》- spark集群部署模式-CSDN博客

目录

[15.1 Yarn角色回顾](#15.1 Yarn角色回顾)

[15.2 Spark运行角色](#15.2 Spark运行角色)

[15.3 Spark的Job任务调度全流程](#15.3 Spark的Job任务调度全流程)

[15.4 Spark的任务提交全流程](#15.4 Spark的任务提交全流程)

[15.5 Spark应用程序](#15.5 Spark应用程序)


15.1 Yarn角色回顾

Yarn主要有四类角色,从2个层面去看:

资源管理层面:

  • 集群资源管理者(Master):ResourceManager

  • 单机资源管理者(Worker):NodeManager

任务计算层面:

  • 单任务管理者(Master):ApplicationMaster

  • 单任务执行者(Worker):Task(容器内计算框架的工作角色)

15.2 Spark运行角色

Spark中由4类角色组成了整个spark的运行时环境

资源管理层面:

  • Master:管理整个集群的资源

  • Worker的:管理单个服务器的资源

任务计算层面:

  • Driver:管理单个spark任务在运行的时候的工作

  • Executor(Worker):单个任务运行的时候的一堆工作者,干活的。

15.3 Spark的Job任务调度全流程

任务调度流程是指Spark集群中的资源管理器(如YARN或Mesos)将任务分配给可用的执行器(如Spark Worker)的过程。它包括以下步骤:

任务调度流程是任务提交全流程的一个组成部分,任务提交全流程包含了更多的步骤和细节。

Spark的任务,由Driver进行调度,这个工作包含:

  • 逻辑DAG产生

  • 分区DAG产生

  • Task划分

  • 将Task分配成Executor并监控其工作

如图,Spark程序的调度流程如图:

  1. 当使用命令行提交Spark任务代码时,首先会运行MAIN函数,创建SparkContext对象(构建DAGScheduler和TaskScheduler)。

  2. 因为Spark中的计算操作是基于RDD算子链进行的,对于转换算子,它只会形成了RDD之间的依赖关系,构建DAG有向无环图,只有在最后调用行动(action)算子时,才会触发job并调度执行。

  3. 执行时,Driver端会将有向无环图提交给DAGScheduler

  4. DAG Scheduler(DAG调度器)会基于DAG图,按照宽窄依赖划分一个个stage.

  5. stage被创建完之后,以stage为单位,将task封装到TaskSet里面。再把TaskSet提交给TaskScheduler

  6. TaskScheduler(Task调度器)将逻辑Task分配到各个Executor上干活,并监控它们。

  7. Worker(Executor),主要就是听从它们的指令干活,并定期被向TaskScheduler汇报它的进度。

15.4 Spark的任务提交全流程

任务提交全流程是指将Spark应用程序提交到集群并执行的整个过程,包括任务调度流程以及其他相关步骤:

当我们用命令行提交任务代码后,会执行以下操作

  1. 客户端向资源管理器master发送注册和申请资源的请求,master负责任务资源的分配

  2. Master收到申请资源的请求后,向指定的worker节点发送请求,然后worker节点会开启对应的executor的进程

  3. Executor进程会向driver发送注册请求,然后申请要计算的task

  4. 在driver的内部会执行一些操作,最终都会通过task scheduler提交task到executor进程里去运行

  5. 当所有的task任务在executor进程里面依次运行完成后,drver端会向master发送一个注销请求,

  6. Master收到这个请求后,然后通过对应的worker节点关闭executor进程,最后worker节点上的计算资源就会得到释放

15.5 Spark应用程序

一个Spark应用程序包括Job、Stage及Task:

  • 第一:Job是以Action方法为界,遇到一个Action方法则触发一个Job

  • 第二:Stage是Job的自己,以RDD宽依赖(即Shuffle)为界,遇到Shuffle做一次划分

  • 第三:Task是Stage的自己,以并行度(分区数)来衡量,分区数是多少,则有多少个task

相关推荐
掘金安东尼1 小时前
把复杂留给架构,把简单留给开发 —— Amazon Aurora DSQL 宣布:全面可用
面试·架构·github
运器1232 小时前
【一起来学AI大模型】支持向量机(SVM):核心算法深度解析
大数据·人工智能·算法·机器学习·支持向量机·ai·ai编程
Code季风2 小时前
微服务分布式配置中心:Gin Web 服务层与 gRPC 服务层集成 Nacos 实战
分布式·微服务·rpc·架构·go·gin·consul
万米商云3 小时前
企业物资集采平台解决方案:跨地域、多仓库、百部门——大型企业如何用一套系统管好百万级物资?
大数据·运维·人工智能
BigData共享3 小时前
极致性能背后的黑科技?这个世上没有“银弹”!(三)
大数据
阿里云大数据AI技术3 小时前
Flink Forward Asia 2025 主旨演讲精彩回顾
大数据·人工智能·flink
赋范大模型技术社区3 小时前
【LangChain 实战】多智能体协作实现浏览器自动化丨Agents 运行流程丨多工具串&并联调用
架构·github·代码规范
y_y_liang4 小时前
图生生AI商品换背景,高效商拍!
大数据·人工智能·ai·ai作画
王小王-1234 小时前
基于Hadoop的用户购物行为可视化分析系统设计与实现
大数据·hadoop·分布式·用户购物行为·电商日志分析