大数据 - 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

相关推荐
学术会议3 小时前
“智能控制的新纪元:2025年机器学习与控制工程国际会议引领变革
大数据·人工智能·科技·计算机网络·机器学习·区块链
Vol火山4 小时前
云原生架构中的中间件容器化:优劣势与实践探索
云原生·中间件·架构·数字化
阿隆ALong5 小时前
跨境电商培训:云手机的新舞台
大数据·智能手机·矩阵·云计算·arm
程序员JerrySUN5 小时前
BitBake 执行流程深度解析:从理论到实践
linux·开发语言·嵌入式硬件·算法·架构
RFID舜识物联网5 小时前
RFID智能文件柜:高效安全的档案管理新方案
大数据·网络·人工智能·嵌入式硬件·物联网
dbcat官方5 小时前
2.微服务灰度发布落地实践(agent实现)
微服务·云原生·架构
goTsHgo6 小时前
Hive on Spark 离线数据仓库中拉链表全流程使用
数据仓库·hive·spark
AZDNA7 小时前
搭建医疗行业AI知识库:提升信息管理与服务效能
大数据·人工智能
time never ceases7 小时前
Elasticsearch安装和数据迁移
大数据·数据库·elasticsearch·es
袖清暮雨8 小时前
5_SparkGraphX讲解
大数据·算法·spark