文档章节

spark内核揭秘-04-spark任务调度系统个人理解

stark_summer
 stark_summer
发布于 2015/01/18 21:25
字数 511
阅读 2367
收藏 47

spark的任务调度系统如下所示:

从上图中可以看出来由RDD Objects产生DAG,然后进入了DAGScheduler阶段,DAGScheduler是面向state的高层次的调度器,DAGScheduler把DAG拆分成很多的tasks,每组的tasks都是一个state,每当遇到shuffle就会产生新的state,可以看出上图一共有三个state;DAGScheduler需要记录那些RDD被存入磁盘等物化动作,同时需寻找task的最优化调度,例如数据本地性等;DAGScheduler还要监视因为shuffle输出导致的失败,如果发生这种失败,可能就需要重新提交该state:


DAGScheduler划分state后以TaskSet为单位把任务,把任务交给底层次的可插拔的调度器TaskScheduler来处理:


可以看出TaskScheduler是一个trait,在目前spark系统中TaskScheduler的实现类只有一个TaskSchedulerImpl:


一个TaskScheduler只为一个SparkContext实例服务,TaskScheduler接受来自DAGScheduler发送过来的分组的任务,DAGScheduler给TaskScheduler发送任务的时候是以Stage为单位来提交的,TaskScheduler收到任务后负责把任务分发到集群中Worker的Executor中去运行,如果某个task运行失败,TaskScheduler要负责重试;另外如果TaskScheduler发现某个Task一直未运行完,就可能启动同样的任务运行同一个Task,那个任务先运行完就用哪个任务的结果。


TaskScheduler发送的任务交给了Worker上的Executor以多线程的方式运行,每一个线程负责一个任务:





其中的存储系统的管理是BlockManager来负责的:


看一下TaskSet的源码:


从TaskSet源码的第一个参数tasks就可以看出其是一个Task的数组,包含一组Task。

© 著作权归作者所有

共有 人打赏支持
stark_summer
粉丝 61
博文 75
码字总数 51050
作品 0
朝阳
CEO
私信 提问
加载中

评论(2)

stark_summer
stark_summer

引用来自“寒风剑海”的评论

其实,TaskScheduler还有两个实现类,不过都是继承了TaskScheculerImpl类,分别是YarnClusterScheduler和YarnClientClusterScheduler,在yarn文件夹下
恩 确实,刚才重新了下代码,果真的,记住了,谢谢O(∩_∩)O
寒风剑海
寒风剑海
其实,TaskScheduler还有两个实现类,不过都是继承了TaskScheculerImpl类,分别是YarnClusterScheduler和YarnClientClusterScheduler,在yarn文件夹下
SPARK 源码分析技术分享(带bilibili视频)

SPARK 源码分析技术分享 (带bilibili视频) 【本站点正在持续更新中…2018-12-05…】 SPARK 1.6.0-cdh5.15.0 Hadoop 2.6.0-cdh5.15.0 spark-scala-maven 微信(技术交流) : thinktothings SPA...

thinktothings
12/02
0
0
我的第一本著作:Spark技术内幕上市!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/anzhsoft2008/article/details/48594363 现在各大网站销售中! 京东:http://item.jd.com/11770787.html 当当...

anzhsoft
2015/09/20
0
0
Spark2.1.0之模块设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80386736 在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》和《Spark...

泰山不老生
06/05
0
0
从Hadoop到Spark的架构实践

当下,Spark已经在国内得到了广泛的认可和支持:2014年,Spark Summit China在北京召开,场面火爆;同年,Spark Meetup在北京、上海、深圳和杭州四个城市举办,其中仅北京就成功举办了5次,内...

Emilypz
2015/10/10
1K
0
如何成为云计算大数据Spark高手

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位; 要想...

Spark亚太研究院
2014/06/13
2K
3

没有更多内容

加载失败,请刷新页面

加载更多

Netty handle方法周期 (四)

写了一个练习之后,发现自定义的助手类每次肯定是必须的,对于不同的业务逻辑需求,会写相对应的逻辑 最简单的查看Handle生命周期的方式,就是重写上级方法,看名字差不多应该可以知道方法的作用 ...

_大侠__
11分钟前
2
0
vue主动刷新页面及列表数据删除后的刷新实例

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者...

前端小攻略
21分钟前
5
0
闲话高并发的那些神话,看京东架构师如何把它拉下神坛

高并发也算是这几年的热门词汇了,尤其在互联网圈,开口不聊个高并发问题,都不好意思出门。高并发有那么邪乎吗?动不动就千万并发、亿级流量,听上去的确挺吓人。但仔细想想,这么大的并发与...

James-
26分钟前
4
0
Emacs 系列:让我们拥抱 Emacs 和 org 模式

导读 我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTD 和 ZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很...

问题终结者
27分钟前
5
0
解析Node.js通过axios实现网络请求

本次给大家分享一篇node.js通过axios实现网络请求的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 1、使用Npm 下载axios n...

前端攻城老湿
40分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部