文档章节

spark内核揭秘-06-TaskSceduler启动源码解析初体验

stark_summer
 stark_summer
发布于 2015/01/19 18:20
字数 467
阅读 58
收藏 2

TaskScheduler实例对象启动源代码如下所示:


从上面代码可以看出来,taskScheduler的启动是在SparkContext


找到TaskSchedulerImpl实现类中的start方法实现:

1、从上代码看到,先启动CoarseGrainedSchedulerBackend,


从上面CoarseGrainedSchedulerBackend类的代码,可以看出spark启动了DriverActor,名称为CoarseGrainedScheduler,这是一个akka消息通信类,会先运行preStart()方法


从上面代码可以看到,初始化了akka客户端监听,还有最重要的是调用了系统的scheduler调度,参数函数是立即执行调度,间隔1000毫秒,运行ReviveOffers方法


进入makeOffers()方法:


运行launchTask方法:




这段代码是spark序列号任务大小超过akkaFrameSize - AkkaUtils.reservedSizeBytes大小,那就报错为”Serialized task %s:%d was %d bytes, which exceeds max allowed: " +
                "spark.akka.frameSize (%d bytes) - reserved (%d bytes). Consider increasing " +
                "spark.akka.frameSize or using broadcast variables for large values.
“ ,此刻会将该任务终止,并将任务从任务列表中移除,这样推荐使用broadcast广播方式

否则,将获取执行任务数据,并减少空闲cpu数,发送消息执行 LaunchTask(new SerializableBuffer(serializedTask))方法,即CoarsedGrainedExecutorBackend类的LaunchTask方法:


上面代码 会运行executor 的launchTask方法:


TaskRunner就是一个多线程:




代码太多,我就不截图了,其实实际就是根据机器状况,运行task任务

2、然后我们回到TaskSchedulerImpl实现类中的start方法


如果isLocal=false and spark.speculation=true,不是local模式,那就要dispatcher分发任务了,默认是100毫秒后立即启动,并间隔100毫秒循环运行,


CoarseGrainedSchedulerBackend的reviveOffers:

© 著作权归作者所有

stark_summer
粉丝 61
博文 75
码字总数 51050
作品 0
朝阳
CEO
私信 提问
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
2018/12/02
0
0
Spark Streaming源码解析之Job动态生成

---title: sparkStreaming源码解析之Job动态生成subtitle: sparkStream的Job动态生成思维脑图description: sparkStream的Job动态生成思维脑图keywords: [spark,streaming,源码,JOB]author: ...

freeli
2018/12/07
42
0
Spark2.1.0之剖析spark-shell

通过在spark-shell中执行word count的过程,让读者了解到可以使用spark-shell提交Spark作业。现在读者应该很想知道spark-shell究竟做了什么呢? 脚本分析 在Spark安装目录的bin文件夹下可以找...

beliefer
2018/04/20
0
0
Spark成为大数据高手进阶步骤

什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapRedu...

MoksMo
2015/11/05
2.1K
1
如何成为云计算大数据Spark高手

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

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

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部