【spark】spark内核调度(重点理解)

这篇具有很好参考价值的文章主要介绍了【spark】spark内核调度(重点理解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

spark内核调度

DAG

Spark的核心是根据RDD来实现的,Spark Scheduler则为Spark核心实现的重要一环,其作用就是任务调度。Spark的任务调度就是如何组织任务去处理RDD中每个分区的数据,根据RDD的依赖关系构建DAG,基于DAG划分Stage,将每个Stage中的任务发到指定节点运行。基于Spark的任务调度原理,可以合理规划资源利用,做到尽可能用最少的资源高效地完成任务计算
【spark】spark内核调度(重点理解),spark,spark,ajax,服务器

  • DAG:有向无环图(有方向但是没有形成闭环的一个执行流程图)
    有向:有方向
    无环:没有闭环

  • Job和Action的关系
    【spark】spark内核调度(重点理解),spark,spark,ajax,服务器

Action:返回值不是RDD的算子
Job:一个应用程序内的子任务
一个Action会产生一个Job,每一个Job有自己对应的DAG图
1个ACTION = 1个DAG = 1个JOB
层级关系:
一个Application中,可以有多个JOB,每一个JOB内含有一个DAG,同时每一个JOB都是由一个Action产生的。

  • DAG和分区:有关系

DAG的宽窄依赖和阶段划分

在SparkRDD前后之间的关系,分为

  • 窄依赖:父RDD的一个分区,全部将数据发给子RDD的一个分区

【spark】spark内核调度(重点理解),spark,spark,ajax,服务器

  • 宽依赖:父RDD的一个分区,将数据发给子RDD的多个分区
    【spark】spark内核调度(重点理解),spark,spark,ajax,服务器
  • 阶段划分:对于Spark来说,会根据DAG按照宽依赖,划分不同的DAG阶段
    划分依据:从后向前,遇到宽依赖,就划分出一个阶段。称之stage
    【spark】spark内核调度(重点理解),spark,spark,ajax,服务器
    如图,可以看到,在DAG中,基于宽依赖,将DAG划分成2个stage
    在stage内部一定是:窄依赖

内存迭代计算

【spark】spark内核调度(重点理解),spark,spark,ajax,服务器
基于带有内存的DAG,以及阶段划分。可以从图中可能出 逻辑上最优的task分配。一个task是一个线程来具体执行的。

task1中 rdd1、rdd2、rdd3的迭代计算,都是由一个task(线程完成),这一阶段的这一条线,是纯内存计算

task1 task2 task3,就形成了三个并行的 内存计算管道

面试题

Spark是怎样做内存计算的?DAG的作用是什么?Stage阶段划分的作用?

1、Spark任务会产生DAG图
2、DAG图会基于分区和宽窄依赖关系划分阶段
3、一个阶段的内部是窄依赖,窄依赖内,如果形成前后1:1分区对应关系,就可以产生许多内存迭代计算的管道
4、这些内存迭代计算的管道,就是一个个具体的执行Task
5、一个Task就是一个具体的线程,任务跑在一个线程内,就是走内存计算了

Spark为什么比MapReduce快

【spark】spark内核调度(重点理解),spark,spark,ajax,服务器

spark并行度

spark的并行:在同一时间内,有多少个task在同时运行
并行度:并行能力的设置
有6个task并行的前提下,rdd的分区就被规划成6个分区了
先有并行度,才会有的分区

如何设置并行度:spark.default.parallelism

可以在代码中和配置文件中以及提交程序的客户端参数中设置
优先级从高到低:
1、代码中
2、客户端提交参数中
3、配置文件中
4、默认

全局并行度是推荐设置,不要针对RDD改分区,可能会影响内存迭代管道的构建,或者会产生额外的shuffle

集群中如何规划并行度

结论:设置为CPU总核数的2~10倍
CPU的一个核心同一时间只能干一件事情
所以,在100个核心的情况下,设置100个并行度,就能让CPU 100%出力
这种设置下,如果task的压力不均衡,某个task先执行完了,就会导致CPU核心空闲
所以,我们将Task并行分配的数量变多,比如800个并行,同一时间只有100个在运行,700个在等待
但是可以确保,某个task运行完了,后续有task补上,不让cpu闲下来,最大程度利用集群资源

规划并行度,只看集群CPU核数

spark的任务调度

spark的任务调度由Drive进行调度,这个工作包含:
1、逻辑DAG产生
2、分区DAG产生
3、Task划分
4、将Task分配给Executor并监控其工作
【spark】spark内核调度(重点理解),spark,spark,ajax,服务器

  • Driver端被构建出来
  • 构建SparkContext(执行环境入口对象)
  • 基于DAG Scheduler(DAG调度器)构建逻辑Task分配
  • 基于TaskScheduler(Task调度器)将逻辑Task分配到各个Executor上干活,并监控他们
  • Worker(Executor),被TaskScheduler管理监控,听从他们的指令干活,并定期汇报进度。

Driver内两个组件:
DAGScheduler(DAG调度器)
工作内容:将逻辑的DAG图进行处理,最终得到逻辑上的Task划分
TaskScheduler(Task调度器)
工作内容:基于DAG Scheduler的产生,来规划这些逻辑的task,应该在哪些物理的Excutor上运行,以及监控管理他们的运行

Spark运行中的概念名词大全

1、一个spark环境可以运行多个Application
2、一个代码运行起来,会成为一个Application
3、Application内部可以有多个Job
4、每个Job由一个Action产生,并且每个Job有自己的DAG执行图
5、一个Job的DAG图 会基于宽窄依赖划分成不同的阶段
6、不同阶段内基于分区数量,形成多个并行的内存迭代管道
7、没一个内存迭代管道形成一个Task(DAG调度器划分将Job内划分出具体task任务,一个Job被划分出来的task在逻辑上称之为这个Job的taskset)文章来源地址https://www.toymoban.com/news/detail-773913.html

到了这里,关于【spark】spark内核调度(重点理解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第10章 Web服务器与Ajax

    学习目标 熟悉Web基础知识,能够说出Web服务器、URL和HTTP的概念 熟悉什么是Node.js,能够说出Node.js的作用 掌握Node.js的下载和安装,能够独立完成Node.js的下载和安装 熟悉什么是Express,能够说出Express的作用 掌握Express的安装,能够使用node命令完成Express的安装 掌握如何使用Ex

    2024年01月19日
    浏览(29)
  • haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

    目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统 IP 搭建服务器 centos7 192.168.1.12 haproxy centos7 192.168.1.132 nfs(rpcbind) ce

    2024年02月09日
    浏览(35)
  • thinkphp5实现ajax图片上传,压缩保存到服务器

    thinkphp压缩图片插件官方地址 使用Composer安装ThinkPHP5的图像处理类库: composer require topthink/think-image 另外一种方法,传递base64图片,提交图片数据的字符串

    2024年02月07日
    浏览(39)
  • AJAX-基本了解和掌握(前端必掌握在后台与服务器交换数据)

    首先前端常听到的有ajax,axios,fetch来与服务器交换数据。我们来了解一下这些都是什么? 目录 第一部分:什么是AJAX? 第二部分:什么是axios? 第三部分 什么是fetch? 第四部分 ajax,axios,fetch的区别 第五部分 细节拓展 第一部分:什么是AJAX? AJAX :官方释意:Asynchronous JavaScript

    2024年02月01日
    浏览(44)
  • 集群服务器GPU深度模型训练笔记(PBS作用调度系统)

    用户手册:https://hpc.sustech.edu.cn/ref/cluster_User_Manual.pdf 培训视频:https://hpc.sustech.edu.cn/ref/meeting_20230810.mp4 启明2.0使用手册:https://hpc.sustech.edu.cn/ref/qiming_User_Manual_v3.0.pdf Anaconda官方教程:https://hpc.sustech.edu.cn/ref/anaconda-install-by-user.html FileZilla传输数据 filezilla是一款用于与远程服

    2024年01月16日
    浏览(36)
  • AJAX 使用 JavaScript 的 `XMLHttpRequest` 对象来向服务器发送异步请求

    AJAX 是一种使用异步 HTTP (Ajax) 请求获取和发送数据的技术。它使得网页能够进行异步更新,而不需要重新加载整个页面。通过使用 AJAX,可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。 AJAX 使用 JavaScript 的 XMLHttpRequest 对象来向服务器发送异步请

    2024年01月16日
    浏览(44)
  • vue3+elementPlus登录向后端服务器发起数据请求Ajax

    后端的url登录接口 先修改main.js文件 login.vue 此时前端有跨域问题 先配置跨域 vue.config.js  项目中如果没有这个文件 请自行创建。 此时可以看到跳转到登录到home页面  完整的后端登录方法  消息提示使用elementPlus 的Elmessage 

    2024年01月18日
    浏览(33)
  • [学习分享]----sylar服务器框架源码阅读--IO协程调度模块

    sylar作者在本站的地址为 这里,也可以查看 作者主页,也有视频教程可以 点击这里。此外,也可以看一下赵路强大佬的关于sylar协程模块的博客 点击这里,我本人在阅读sylar源码的时候也是参考了赵路强大佬的解析 可以点击这里。 各位看官也可以加我的qq和我讨论2511010742

    2024年01月17日
    浏览(37)
  • Nginx代理服务器、HTTP调度、TCP/UDP调度、Nginx优化、HTTP错误代码、状态页面、压力测试

    Top 案例1:Nginx反向代理 案例2:Nginx的TCP/UDP调度器 案例3:Nginx常见问题处理 1.1 问题 使用Nginx实现Web反向代理功能,实现如下功能: 后端Web服务器两台,可以使用httpd实现 Nginx采用轮询的方式调用后端Web服务器 两台Web服务器的权重要求设置为不同的值 最大失败次数为2,失败

    2024年01月21日
    浏览(33)
  • Linux:查看服务器信息,CPU、内存、系统版本、内核版本等

    还是最近工作的总结,在做一些性能验证,这就需要要根据服务器的配置综合考虑来做进一步的结论论证,废话不多说 第一种方式 第二种方式 个人偏推崇第一种方式吧,能够更明显的看到版本和一些详细信息 第一种方式 这个命令适用于所有的Linux发行版,包括Redhat、SuSE、

    2024年01月19日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包