spark scheduler_scheduledthreadpool

spark scheduler_scheduledthreadpoolSpark的TaskScheduler和DagScheduler开始研究神奇的spark。会陆续将研究的心得放上来。在Spark中一个核心的是模块就是调度器(Scheduler),在spark中Scheduler有两种TaskScheduler(是低级的调度器接口),DagScheduler(是高级的调度)我们在创建SparkContext对象的时候,sparkcontext内部就会创建Ta…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Spark的TaskScheduler和DagScheduler

开始研究神奇的spark。会陆续将研究的心得放上来。

在Spark中一个核心的是模块就是调度器(Scheduler),在spark中Scheduler有两种TaskScheduler(是低级的调度器接口),DagScheduler(是高级的调度)

我们在创建SparkContext对象的时候,sparkcontext内部就会创建TaskScheduler和DagScheduler,奇迹从此就发生了。

其中TaskScheduler和DagScheduler的关系。
  DagScheduler:DagScheduler是一个高级的scheduler 层,他实现了基于stage的调度,他为每一个job都计算stage,跟踪哪一个rdd和stage的输出被物化(固化),以及寻找到执行job的最小的调度,然后他会将stage作为tasksets提交给底层的TaskScheduler,由TaskScheduler执行。
  除了计算stage的DAG图之外,这个调度器会决定运行task的最优的位置,这是根据当前的cache 状态,并且把这些状态传递给TaskScheduler。而且,他会在shuffle的输出出现错误(比如输出文件丢失)的时候处理失败,这时,之前老的stage就需要被重做。对于并不是由于shuffle file的丢失而造成的stage的失败,这中失败由TaskScheduler,此时TaskScheduler会在取消整个stage之前重试几次task,若重试的几次都失败了,那就会取消stage。
  TaskScheduler:每一个taskScheduler只为一个单独的SparkContext进行调度安排tasks,DAGScheduler会为每一个stage向TaskScheduler提交Tasksets(也就是说TaskSets是在DAGScheduler完成组装),TaskScheduler会负责向cluster发送tasks,并且调用backend来运行task。并且在tasks失败的时候,重试,然后会将运行task,重试task的事件返回给DAGScheduler。
所以要研究Spark的任务调度,以及执行,需要从DagScheduler–>TaskScheduler进行研究。

在Spark内部TaskScheduler的种类:
1.TaskSchedulerImpl(该调度器,实现基于moses、local、local-cluster、simr的调度)。该类还支持启动speculative task
2.YarnClientClusterScheduler
3.YarnClusterScheduler
其中YarnClientClusterScheduler和YarnClusterScheduler就是基于Yarn资源调度。

TaskScheduler中实际执行task时会调用Backend.reviveOffers,在spark内有多个不同的backend:
1.LocalBackend
2.SparkDeploySchedulerBackend
3.CoarseGrainedSchedulerBackend
4.MesosSchedulerBackend
5.YarnClientSchedulerBackend
6.SimrSchedulerBackend

参考:
1.Spark官网:https://spark.apache.org/docs/0.9.0
2.Spark源代码
3.白硕:http://baishuo491.iteye.com/
4.http://jerryshao.me/architecture/2013/04/21/Spark源码分析之-scheduler模块/
另:此博客开始,我会在每篇文章中尽量把所有的引用都明确付贴进去,以表示对他人的尊敬。

文章引入:https://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2040748

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183387.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决Ubuntu18.04版本高分辨率下导致字体过小问题

    解决Ubuntu18.04版本高分辨率下导致字体过小问题我所使用的是小米笔记本,显示屏是3.2K的分辨率。由于分辨率太高了,然后在ubuntu18.04的版本下显示的字体很小,小到都看不清了那种。于是查找了调整18.04版本字体大小的方法如下:安装gnome-tweaks工具sudoapt-getinstallgnome-tweaks安装完之后,直接在终端输入gnome-tweaks即可运行该工具。然后调整缩放比例,因为我的电脑分辨率是3.2K,所以我调整的缩放比例是2倍刚刚好,如下图:调整完之后,直接关闭该工具。再次回到ubunt

    2022年7月21日
    29
  • 微信公众号网页开发-Vue项目坑点分析

    微信公众号网页开发-Vue项目坑点分析项目背景该系统为商品推广系统,微信交互涉及网页授权和网页分享,年前使用django框架做了基础版,节后项目升级,功能更加丰富,使用vue框架做前后端分离开发,前后端分离开发提升了开发效率,也埋藏了很多坑点。。。坑点分析及解决开发前需要进入公众号后台配置”JS接口安全域名”及“授权回调页面域名”,如果服务端要获取token,还需要配置”IP白名单”,详细信息可以查阅官网。微信公众号官方文档:微信公众平台开发概述|微信开放文档微信开发者平台文档https://developers.weixi

    2022年6月5日
    30
  • httpclient4 请一定设置超时时间

    httpclient4 请一定设置超时时间httpclient4的设置方式和httpclient3有所不同,代码如下:HttpClienthttpclient=newDefaultHttpClient();httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,Config.20000);//连接时间20shttp

    2022年7月22日
    9
  • idea2021.9激活码-激活码分享

    (idea2021.9激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    72
  • Python字符串比较

    Python字符串比较InthistutorialwearegoingtoseedifferentmethodsbywhichwecancomparestringsinPython.Wewillalsoseesometrickycaseswhenthepythonstringcomparisoncanfailandgoldenrulestoget…

    2022年6月18日
    40
  • UART和USART的区别(UART vs USART)[通俗易懂]

    UART和USART的区别(UART vs USART)[通俗易懂]很多工程师都知道UART和USART都是一样的,没有区别。但实际上,两者彼此不同,并且具有不同的属性。这就是我在这里写一篇文章UARTvsUSART的原因。但在研究UART和USART(UART与USART)之间的主要区别之前,我想先解释一下什么是异步和同步通信。异步串行传输:在异步通信中,发送方和接收方之间没有公共时钟。它广泛用于面向字节的传输,这意味着它一次可以发送1个字节或字符。与同步相比,异步通信速度较慢,并且还具有启动和停止位的开销。在异步通信中…

    2022年5月19日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号