IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> spark 内核源码深度剖析 -> 正文阅读

[大数据]spark 内核源码深度剖析

spark 内核源码深度剖析

问题:怎么划分stage,stage之间是怎么调度的,为什么1,3并行,4,7并行

内核架构剖析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dOHo6AUL-1629550583239)(./1626525185981.png)]

  • 提交一个job,启动一个drive进程。
  • 先构造SparkConf再构造SparkContext
  • 在sparkContext时,先构造出来DAGScheduler和TaskScheduler。DAGScheduler负责创建job,Application在遇到action操作时,才会真正的提交任务并进行计算。这时spark会根据action操作之前的Transform操作的关联关系,生成一个DAG,将DAG中的RDD划分到不同的stage,提交stage等,。
  • TaskScheduler负责用调度算法,对集群管理器已经分配给应用程序的资源进行二次调度后分配给任务,TaskScheduler调度的Task是由DAGScheduler创建的,所以DAGScheduler是TaskScheduler的前置调度。TaskScheduler在初始化时,通过对应的后台进程,连接master,向master注册application
  • master接收到application注册的请求后,会使用自己的资源调度算法,在spark集群的worker上,为这个application启动多个execution
  • worker会为application启动executor进程。
  • executor启动之后会反向注册到TaskScheduler
  • 每执行一个action就会创建一个job,提交给DAGScheduler。DAGScheduler会将job划分为多个stage(stage划分算法),然后每个stage创建一个taskSet。taskScheduler会把taskset里每个task提交到executor(分配算法)
  • executor每接收到一个task都会用taskrunner来封装task,然后从线程池中取出一个线程,执行这个task。
  • taskrunner将代码中的算子和函数拷贝、反序列化,然后执行task。
  • task有两种,一中是shufflemapTask和resulttask,只有最后一个task是resulttask,其余都是shuffleMapTask
  • 最后整个spark应用程序的执行就是stage分批次作为taskset提交到executor执行,每个task针对rdd的一个partiiton,执行我们定义的算子和函数。

一级调度:给application分配并运行executor
二级调度:给任务分配executor并运行任务

参考资料:
【Spark 内核】 Spark 内核解析-上

不论Spark以何种模式进行部署,任务提交后,都会先启动Driver进程,随后Driver进程向集群管理器注册应用程序,之后集群管理器根据此任务的配置文件分配Executor并启动,当Driver所需的资源全部满足后,Driver开始执行main函数,Spark查询为懒执行,当执行到action算子时开始反向推算,根据宽依赖进行stage的划分,随后每一个stage对应一个taskset,taskset中有多个task,根据本地化原则,task会被分发到指定的Executor去执行,在任务执行的过程中,Executor也会不断与Driver进行通信,报告任务运行情况。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:36:15  更:2021-08-22 13:36:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:19:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码