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

相关推荐
58沈剑27 分钟前
80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...
架构
拓端研究室TRL3 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗3 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
想进大厂的小王3 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
编码小袁3 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
WeeJot嵌入式4 小时前
大数据治理:确保数据的可持续性和价值
大数据
阿伟*rui4 小时前
认识微服务,微服务的拆分,服务治理(nacos注册中心,远程调用)
微服务·架构·firefox
ZHOU西口4 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk5 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶5 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic