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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 408计算机考研

    408计算机考研为什么要考研?考研要先了动机,没有动机很难在枯燥且艰辛漫长的考研之路坚持到最后。有的人可能说,计算机薪资高,是钱让我充满了斗志!对此云泽只能说,真是庸俗且真实。可是你知道那掉头发的速度和你赚钱的速度是成正比的吗考研要先了动机,没有动机很难在枯燥且艰辛漫长的考研之路坚持到最后。有的人可能说,计算机薪资高,是钱让我充满了斗志!大家都知道,计算机本科就很好就业,所以我们面临的就是读研深造自己和就业的诱惑之间摇摆。我们目前主要就是数理,读研和就业的问题。读研能带给你什么东

  • TortoiseSVN 设置中文语言包

    TortoiseSVN 设置中文语言包

  • 加密connectionStrings

    加密connectionStrings开始菜单>>所有程序>>Microsoftvisualstudio2010>>VisualStudioTools>>VisualStudio命令提示(2010)(如果是windows7,点右键与管理员身份运行)输入aspnet_regiis.exe-pef”connectionStrings””发布后的web.conf…

  • PV(访问量)、UV(独立访客)、IP(独立IP) (转)

    PV(访问量)、UV(独立访客)、IP(独立IP) (转)

  • 最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment

    最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment代码及报错如下解决很多人都非常困惑,为什么在test3中可以直接输出a,但是在test3中,使用a+=1的时候,就直接报错呢?首先,我们需要明确一个概念,就是全局变量与局部变量。如下图,大家觉得打印的a会是1还是3?答案是1,因为定义在test3外部的a是全局变量,而定义在test3内部的a是局部变量。此时,外面这个a与里面这个a没有任何关系。只不过是名字一样而已。其次,我们需要明确在函数内部是可以直接访问到全局变量的,所以上图中test1是可以直接输出a,b的。但是如果是直接在test2中实

  • OleDbCommand执行查询无效的解决[通俗易懂]

    OleDbCommand执行查询无效的解决[通俗易懂]今日连接数据库,写下以下代码  Dim conn As New OleDbConnection        Dim cmd As New OleDbCommand()        conn.ConnectionString = ConfigurationManager.ConnectionStrings(“AccessConn”).ConnectionString        cmd

发表回复

您的电子邮箱地址不会被公开。

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