准备知识

要弄清楚Spark的任务调度流程,就必须要清楚RDD、Lineage、DAG和shuffle的相关知识,关于RDD和Lineage,我的这两天文章已经有过相关介绍,感兴趣可以去看一看

【Spark】RDD(Resilient Distributed Dataset)究竟是什么?

【Spark】RDD的依赖关系和缓存相关知识点接下来说一下DAG的生成shuffle的过程

DAG

概述

DAG(Directed Acyclic Graph),被称为有向无环图,就是有方向无闭环,是根据RDD之间的依赖关系,也即Lineage形成的。

DAG的生成就是为了划分stage,而stage的划分则是从上往下依次,遇到窄依赖便将其加入到当前stage当中,如果遇到宽依赖就重新开始一个stage,而区别宽窄依赖的依据就是是否发生了shuffle过程,那么stage划分的最终依据就是是否发生shuffle过程,正如下图所示

shuffle

概述

在Spark中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager。在Spark1.2版本前,默认的shuffle计算引擎是 HashShuffleManagerSpark1.2版本后,改成了 SortShuffleManager

HashShuffleManager有一个重大弊端:会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能

SortShuffleManager

SortShuffleManager针对HashShuffleManager的弊端做了改进,设置了两种运行机制:普通运行机制bypass运行机制

当shuffle read task的数量小于等于spark.shuffle.sort.bypassMergeThreshold参数的值时(默认为200),就会启用bypass机制。

普通机制

数据会先写到内存大小为5M的缓存中,写满后溢写成为一个个的小文件,并同时进行排序,然后再分批写入到内存缓冲区,进一步写入到磁盘文件中,最后将磁盘文件进行合并,成为一个大文件,并创建对应的索引文件,等待接下来的线程拉取数据

bypass机制

数据不需要经过溢写和排序,直接将数据写入到内存缓冲区,缓冲区写满后溢写到磁盘文件,所有的临时磁盘文件会合并成一个磁盘文件,并创建对应的索引文件,等待拉取


Spark任务调度

流程

一、客户端提交jar包,也就是一个Application

二、Spark会根据Application中的RDD依赖关系,也就是Lineage开始划分DAG

三、划分完成后DAG会被送到DAGScheduler

四、DAGScheduler会根据是否为宽依赖划分Stage,并进一步划分出一个个的taskSet

五、DAGScheduler将划分好的taskSet送到TaskScheduler

六、TaskScheduler接收成功后,会将taskSet划分成为一个个的task,并准备将task发送到Worker中的executor执行

七、与executor进行通信,开始执行task

前六步都是Spark-Driver负责,所以一般推荐使用Cluster模式,将Driver运行在Worker中



【Spark】Spark任务调度相关知识的更多相关文章

  1. Spark on Yarn年度知识整理

    大数据体系结构: Spark简介 Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,如f ...

  2. Spark的任务调度

    本文尝试从源码层面梳理Spark在任务调度与资源分配上的做法. 先从Executor和SchedulerBackend说起.Executor是真正执行任务的进程,本身拥有若干cpu和内存,可以执行以线 ...

  3. Spark内核-任务调度机制

    作者:十一喵先森 链接:https://juejin.im/post/5e1c414fe51d451cad4111d1 来源:掘金 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. ...

  4. Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作

    Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作 1.sparkstreaming实时写入Hbase(saveAsNewAPIHadoopDataset方法 ...

  5. 分布式计算框架-Spark(spark环境搭建、生态环境、运行架构)

    Spark涉及的几个概念:RDD:Resilient Distributed Dataset(弹性分布数据集).DAG:Direct Acyclic Graph(有向无环图).SparkContext ...

  6. [spark] spark 特性、简介、下载

    [简介] 官网:http://spark.apache.org/ 推荐学习博客:http://dblab.xmu.edu.cn/blog/spark/ spark是一个采用Scala语言进行开发,更快 ...

  7. PySpark SQL 相关知识介绍

    title: PySpark SQL 相关知识介绍 summary: 关键词:大数据 Hadoop Hive Pig Kafka Spark PySpark SQL 集群管理器 PostgreSQL ...

  8. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  9. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

随机推荐

  1. 《SQL 反模式》 学习笔记

    第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...

  2. Salesforce 产品 | 协同办公“大魔王”,Salesforce Quip的使用攻略!

    Salesforce帮助企业渡过疫情难关,支持在线远程办公.7.5亿美金收购的动态文档共享平台Quip,即刻开放给所有Salesforce老客户还有非营利组织免费使用至2020年9月30日. Quip ...

  3. 数据挖掘入门系列教程(九)之基于sklearn的SVM使用

    目录 介绍 基于SVM对MINIST数据集进行分类 使用SVM SVM分析垃圾邮件 加载数据集 分词 构建词云 构建数据集 进行训练 交叉验证 炼丹术 总结 参考 介绍 在上一篇博客:数据挖掘入门系列 ...

  4. Everything信息泄露

    Everything漏洞描述 [Everything]一款搜索文件非常快的工具,其速度之快令人震惊!它还有一个可以通过HTTP 或 FTP 分享搜索结果 的功能.它可以让用户在本地或局域网上的其他电脑 ...

  5. sk-learn实现L2岭回归,对线性回归正则化

    岭回归算法: from sklearn.datasets import load_boston from sklearn.externals import joblib from sklearn.li ...

  6. 用long类型让我出了次生产事故,写代码还是要小心点

    昨天发现线上试跑期的一个程序挂了,平时都跑的好好的,查了下日志是因为昨天运营跑了一家美妆top级淘品牌店,会员量近千万,一下子就把128G的内存给爆了,当时并行跑了二个任务,没辙先速写一段代码限流,后 ...

  7. 关于json转义中文

    服务器传递或者程序传递中,不识别读取到的JSON数据中 \u开头的数据. PHP 生成JSON的时候,必须将汉字不转义为 \u开头的UNICODE数据. 网上很多,但是其实都是错误的,正确的方法是在j ...

  8. 15分钟从零开始搭建支持10w+用户的生产环境(三)

    上一篇文章介绍了这个架构中,选择MongoDB做为数据库的原因,及相关的安装操作. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(二)   三.WebServer 在SOA和gRPC大行其 ...

  9. python入门学习之Python爬取最新笔趣阁小说

    Python爬取新笔趣阁小说,并保存到TXT文件中      我写的这篇文章,是利用Python爬取小说编写的程序,这是我学习Python爬虫当中自己独立写的第一个程序,中途也遇到了一些困难,但是最后 ...

  10. css中的宽和高

    width width表示宽 height height表示高 max-width.min-width max-width表示最大宽度 min-width表示最小宽度 max-height.min-h ...