Spark大数据处理讲课笔记----Spark任务调度
零、本节学习目标
- 理解DAG概念
- 了解Stage划分
- 了解RDD在Spark中的运行流程
一、有向无环图
(一)DAG概念
- DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个DAG。DAG是一种非常重要的图论数据结构。如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图就是有向无环图。“4→6→1→2”是一条路径,“4→6→5”也是一条路径,并且图中不存在从顶点经过若干条边后能回到该点。

(二)实例讲解
- 根据RDD之间依赖关系的不同可将DAG划分成不同的Stage(调度阶段)。对窄依赖来说,RDD分区的转换处理是在一个线程里完成,所以窄依赖会被Spark划分到同一个Stage中;而对宽依赖来说,由于有Shuffle存在,所以只能在父RDD处理完成后,下一个Stage才能开始接下来的计算,因此宽依赖是划分Stage的依据,当RDD进行转换操作,遇到宽依赖类型的转换操作时,就划为一个Stage。

- A、C、E是三个RDD的实例
- 当A做groupByKey转换操作生成B时,由于groupByKey转换操作属于宽依赖类型,所以就把A划分为一个Stage,如Stage1。
- 当C做map转换操作生成D, D与E做union转换操作生成F。由于map和union转换操作都属于窄依赖类型,因此不进行Stage的划分,而是将C、D、E、F加入到同一个Stage中。
- 当F与B进行join转换操作时,由于这时的join操作是非协同划分,所以属于宽依赖,因此会划分为一个Stage,如Stage2。
- 剩下的B和G被划分为一个Stage,如Stage3。
二、Stage划分依据
- Spark会根据DAG将整个计算划分为多个阶段,每个阶段称为一个Stage。每个Stage由多个Task任务并行进行计算,每个Task任务作用在一个分区上,一个Stage的总Task任务数量是由Stage中最后一个RDD的分区个数决定的。
- Stage的划分依据为是否有宽依赖,即是否有Shuffle。Spark调度器会从DAG图的末端向前进行递归划分,遇到Shuffle则进行划分,Shuffle之前的所有RDD组成一个Stage,整个DAG图为一个Stage。
(一)两阶段案例
- 经典的单词计数执行流程的Stage划分如下图所示。

- 上图中的依赖关系一共可以划分为两个Stage:从后向前进行递归划分,RDD3到RDD4的转换是Shuffle操作,因此在RDD3与RDD4之间划开,继续向前查找,RDD1、RDD2、RDD3之间的关系为窄依赖,因此为一个Stage;整个转换过程为一个Stage。
(二)三阶段案例
- 下图中的依赖关系一共可以划分为3个Stage:从后向前进行递归划分,由于RDD6到RDD7的转换是Shuffle操作,因此在RDD6与RDD7之间划开,然后继续向前查找,RDD3、RDD4、RDD5、RDD6为一个Stage;由于RDD1到RDD2的转换是Shuffle操作,因此在RDD1与RDD2之间划开,然后继续向前查找,RDD1为一个Stage;整个转换过程为一个Stage。

三、RDD在Spark中的运行流程
- Spark的任务调度流程,即RDD在Spark中的运行流程分为RDD Objects、DAGScheduler、TaskScheduler以及Worker四个部分。

(一)RDD Objects
- 当RDD对象创建后,SparkContext会根据RDD对象构建DAG有向无环图,然后将Task提交给DAGScheduler。
(二)DAGScheduler
- 将作业的DAG划分成不同Stage,每个Stage都是TaskSet任务集合,并以TaskSet为单位提交给TaskScheduler。
(三)TaskScheduler
- 通过TaskSetManager管理Task,并通过集群中的资源管理器把Task发给集群中Worker的Executor。
(四)Worker
- Spark集群中的Worker接收到Task后,把Task运行在Executor进程中,一个进程中可以有多个线程在工作,从而可以处理多个数据分区。
相关文章:
Spark大数据处理讲课笔记----Spark任务调度
零、本节学习目标 理解DAG概念了解Stage划分了解RDD在Spark中的运行流程 一、有向无环图 (一)DAG概念 DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个…...
【22-23春】AI作业10-经典卷积网络
1.LeNet & MNIST LeNet是一种神经网络的模型,用于图像识别和分类。他包含 3 个卷积层,2 个池化层,1 个全连接层。其中所有卷积层的所有卷积核都为 5x5,步长 strid1,池化方法都为全局 pooling,激活函数…...
第13章_约束
第13章_约束 1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的…...
GPC规范--安全域基础概念
概述: 分为三种主流类型: 1、发卡方安全域(Issuer Security Domain, ISD),卡片上首要的、强制性存在的安全域,是卡片管理者(通常是发卡方)在卡片内的代表; 2、补充安全域(Supplementary Security Domain&am…...
C++初阶--C++入门之基础学习
0.前言 C是一门非常好的编程语言,但可能在学习C的过程中会遇到很多困难。人们常说 “一个人走得很快,一群人会走的更远”, 所以就让我们一起攻坚克难,一起征服C吧!从本章开始,我们将开始C的基础学习&#x…...
服务器虚拟化部署
服务器虚拟化部署 1、背景2、目的3、环境4、部署4.1、部署VMware ESXi4.1.1、准备工作4.1.2、部署ESXi4.1.3、配置ESXi4.1.4 、部署虚拟机 1、背景 项目上利旧9台服务器,项目需要使用15台服务器,外购已经没有项目硬件采购预算,只能从目前的…...
实验篇(7.2) 01. 实验环境介绍 远程访问 ❀ Fortinet网络安全专家 NSE4
【简介】学习NSE4,如果只看文章而不动手做实验,就象耍流氓。为了有效的巩固学习到的内容,建议经常动手做实验。实验不怕出错,身经百战后,再在生产环境部署和配置FortiGate防火墙,就会做到胸有成竹。 虚拟实…...
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
ThinkPHP6 模型层的模型属性,表映射关系,以及模型层的CRUD及如何在控制层中使用模型层 1. model 模型层的默认映射规则 模型,即mvc模式中的model层,model层用来对接数据库,操作数据库的增删改查。 在tp6中ÿ…...
CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]
题目描述: 题目解读: 给定移动规则以及起始点,终点;分析终点是否可达,可达则输出最小步数。 解题思路: 首先要判定是否可达。画图可知,对于题目给定的移动规则,只能到达起始点(a,b…...
Linux系统编程学习 NO.4 ——基础指令学习、操作系统时间的概念、文件压缩包的概念
1.时间相关的概念以及指令 1.1.时间相关的指令 1.1.1.date指令 date可以指定时间显示的格式:date 指定格式 选项 %H:小时 %M:分钟 %S:秒数 %Y:年份 %m:月份 %d:日 %F:相当于%Y-%m-%d %X:相当…...
leecode 数据库:601. 体育馆的人流量
导入数据: Create table If Not Exists Stadium (id int, visit_date DATE NULL, people int); Truncate table Stadium; insert into Stadium (id, visit_date, people) values (1, 2017-01-01, 10); insert into Stadium (id, visit_date, people) values (2, 20…...
gym不渲染画面的解决方案(gym版本号0.26.2)
确认gym版本号 我安装了新版gym,版本号是0.26.2,不渲染画面的原因是,新版gym需要在初始化env时新增一个实参render_mode‘human’,并且不需要主动调用render方法,官方文档入门教程如下 import gym import numpy as n…...
如何在 Fedora 37 上安装 FileZilla?
FileZilla 是一款流行的开源 FTP(文件传输协议)客户端,它提供了一个直观的界面来管理和传输文件。本文将详细介绍如何在 Fedora 37 上安装 FileZilla。以下是安装过程的详细步骤: 步骤一:更新系统 在安装任何软件之前…...
网终安全技术(刘化君)课后被略的答案
目录 8.HTTP客户机与Wb服务器通信通常会泄露哪些信息? 9.在TCP连接建立的3次握手阶段,攻击者为什么可以成功实施SYN Flood攻击?在实际中,如何防范此类攻击? 常用的网络漏洞扫描技术有哪几种?试举例说明。…...
架构思想之DDD
领域驱动设计(Domain-Driven Design,简称DDD)是一种架构思想,旨在通过将业务问题领域化,将业务逻辑放在核心领域中,以实现更好的软件设计和可维护性。下面将介绍如何实现DDD的Java实现,包括如何…...
FinClip | 2023 年 4 月产品大事记
我们的使命是使您(业务专家和开发人员)能够通过小程序解决您的关键业务流程挑战。不妨让我们看看在本月的产品与市场发布亮点,看看它们如何帮助您实现目标。 产品方面的相关动向👇👇👇 全新版本的小程序统…...
试论什么是圣人境界
人类进化方向就是不断的提高智力。鼓吹体力都是反人类。 圣人是人类能够达到的最高境界,再上一层就是神了。按照中华传统,说圣人就是神也是正确的。 圣人境界是什么样子的?在这一点上,孔子给予了答案:吾道一以贯之。掌…...
在外远程登录局域网下的象过河ERP管理系统,无需公网IP
文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 转发自CSDN远程穿透的文章:公网远程访问公司内网象过河ERP系统「内网穿透」 概述 ERP系统对于企业来说重要性不言而…...
golang 服务中 context 超时处理的思考
文章目录 前言起因:日志告警引发的思考什么是contextcontext的作用context超时之后继续执行 or 中断 最后 前言 公司运行的服务代码中,随处可见各种各样的日志信息,其中大多数是用来记录各种异常的日志,一方面,当出现…...
遇到Uniapp配置meta不生效怎么解决
Uniapp是一种基于 Vue.js 的跨平台应用开发框架,其开发简单、易上手,可以快速构建出 iOS、Android 和 H5 页面,成为现在移动应用开发的重要工具之一。然而,跨平台应用的开发也带来了一些问题,比如本文即是解决 uniapp …...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
