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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js中常用的一些遍历方法,及一些跳出循环的方法

    js中常用的一些遍历方法,及一些跳出循环的方法1.首先看看跳出循环的方法1)结束本次循环进入下一次循环:continue:for循环、forin、forofreturntrue/false:forEach2)结束整个循环break:for循环、forin、forof、while、do{}while()、trycatch:forEach等各种需要终止循环的程序3)注意:如果有两层fo…

    2022年5月16日
    58
  • 关于JS全局变量问题

    关于JS全局变量问题最近在easyui使用全局变量的时候老是执行if判断语句,而不执行顺序下来的局部赋值。导致老是提示undefined;经网上查询得知JS全局变量时:当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope。Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{}来划分

    2022年6月3日
    34
  • linux搭建php运行环境_linux系统开发环境搭建

    linux搭建php运行环境_linux系统开发环境搭建一、安装Apache2.2.221、到官网下载http://httpd.apache.org/download.cgi,选择相应的版本这里,我选择的是最新的版本可以先下载到windows系统中,上传到linux,也可以直接下载到linux:wgethttp://mirrors.tuna.tsinghua.edu.cn/apache//httpd/http…

    2025年11月30日
    6
  • 将vue项目打包成移动端app(app打包教程)

    Vue项目打包成移动端APP需要准备的工具:Hbuilder目录Vue项目打包成移动端APP首先打包vue到dist目录然后再Hbuilder中打开dist目录然后将dist包含的web项目转换为移动APP项目前几步配置完成后,就可以在手机上进行真机调试了真机测试没有问题,就可以进行下一步—》打包apk了最后将apk安装包安装到手机上就可以正常使用了…

    2022年4月10日
    1.5K
  • Spring学习总结(一)入门

    Spring学习总结(一)入门

    2021年11月30日
    44
  • 查询数据库用户所有表名_sql语句收回用户权限

    查询数据库用户所有表名_sql语句收回用户权限在企业系统中经常会使用到给用户分配权限的情况,往往在用户信息表和权限表之间还维护了一张角色表,即通过给用户添加角色,角色添加权限的这样一种方式来给用户间接的添加权限。如图示例那么,查询用户权限的多表查询sql语句长什么样呢?select*frompe_role_userruinnerjoinpe_role_modulermonru.role_id=rm.`role_id…

    2022年9月1日
    2

发表回复

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

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