许久没有写博客了,没有太多时间,最近陆续将Spark源码的一些阅读笔记传上,接下来要修改Spark源码了。

这个类继承于TaskScheduler类,重载了TaskScheduler中的大部分方法,是Task调度的实际操作。

1、检测推测执行间隔,最大响应时间,每个task的CPU数。

2、指定调度模式SchedulingMode。

3、setDAGScheduler:设置任务调度的对象DAGScheduler。

4、initialize:初始化backend接口和资源池pool,并给资源池配置调度模式,FIFO或者Fair。Backend接口是TaskScheduler与底层资源管理器(如Mesos)交互的接口。

5、获取任务ID。

6、start:主要启动backend接口,检查是否是本地执行,检查是否启动推测执行(如果是就需要启动推测执行的线程)。

7、postStartHook:与start保持同步,等待backend准备好。

8、submitTasks:根据参数中的taskSet(即stage中的一群task)将task提交给集群中执行的UI,惯例先要检查是否是本地执行。

9、cancelTasks:根据stageId来取消任务,也就是取消stage。如果有任务已经运行,要先杀死任务再丢弃stage,否则直接丢弃stage。

10、taskSetFinished:当所有的任务都执行完成后,设置任务执行为完成,并清除其与TaskSetManager的联系。

11、resourceOffers:资源分配的重要方法。首先将各个可活动的节点和executor的地址都标记,添加executor时也要重新标记;然后,为第一次循环做准备,即获取已分配的任务、可用CPU数、排队的task;嵌套循环,循环标准为两个,排队的task和位置优先级,前者为每一个在等待的task,后者为最低优先级到task所标注的优先级;内部执行的操作也是一个循环,当有CPU可用时的while循环;while循环内是一个for循环,用来遍历所有的executor;for循环内部为一个for循环,用来遍历匹配task和executor。

注:优先级为Any、Rack_Local、No_PREF、NODE_LOCAL、PROCESS_LOCAL。

12、statusUpdate:更新各个task的状态,实际上是遍历所有的task,然后根据其TaskSet中记录的值来判断Task的状态。

13、executorHeartbeatReceived:重载心跳接收函数。

14、结果处理函数:handle**函数,用来处理任务运行结果、成功的任务、失败的任务等等;error函数,用来处理失败的错误报告;stop函数,用来关闭backend接口和任务结果接收的接口。

15、checkSpeculatableTasks:检查资源池中是否有需要启动推测执行的task,如果有则需要重新启动offers。

16、executorLost:处理失败的executor,打印错误信息。

17、removeExecutor:移除executor并标记其丢失。

18、waitBackendReady:等待backend接口准备好。

19、类TaskSchedulerImpl:对map按值的数量排序,然后建立索引。

Spark源码学习1.2——TaskSchedulerImpl.scala的更多相关文章

  1. Spark源码学习1.1——DAGScheduler.scala

    本文以Spark1.1.0版本为基础. 经过前一段时间的学习,基本上能够对Spark的工作流程有一个了解,但是具体的细节还是需要阅读源码,而且后续的科研过程中也肯定要修改源码的,所以最近开始Spark ...

  2. Spark源码学习1.6——Executor.scala

    Executor.scala 一.Executor类 首先判断本地性,获取slaves的host name(不是IP或者host: port),匹配运行环境为集群或者本地.如果不是本地执行,需要启动一 ...

  3. Spark源码学习1.3——TaskSetManager.scala

    TaskSetManager.scala TaskSet是指一系列被提交的task,一般是代表特定的stage中丢失的partition.TaskSetManager通过一个TaskScheduler ...

  4. Spark源码学习1.8——ShuffleBlockManager.scala

    shuffleBlockManager继承于Logging,参数为blockManager和shuffleManager.shuffle文件有三个特性:shuffleId,整个shuffle stag ...

  5. Spark源码学习1.5——BlockManager.scala

    一.BlockResult类 该类用来表示返回的匹配的block及其相关的参数.共有三个参数: data:Iterator [Any]. readMethod: DataReadMethod.Valu ...

  6. Spark源码学习1.4——MapOutputTracker.scala

    相关类:MapOutputTrackerMessage,GetMapOutputStatuses extends MapPutputTrackerMessage,StopMapOutputTracke ...

  7. Spark源码学习1.7——Master.scala

    master第一步是加载系统定义的环境变量,如worker的超时时间.系统保留的Application数目等:第二步,加载worker的信 息,地址.id等:第三步,加载Application的信息, ...

  8. Spark源码学习2

    转自:http://www.cnblogs.com/hseagle/p/3673123.html 在源码阅读时,需要重点把握以下两大主线. 静态view 即 RDD, transformation a ...

  9. Spark源码学习3

    转自:http://www.cnblogs.com/hseagle/p/3673132.html 一.概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚 ...

随机推荐

  1. 使用JDBC获取Oracle连接时报错

    The Network Adapter could not establish the connection       网络适配器不能创建连接 作为初学者的来说,这个问题让我找了好多次,每次重新开启 ...

  2. iOS —— 字典遍历排序

    字典NSDictionary一般的遍历方法都是: NSArray* arr = [yourdictonary allKeys]; for(NSString* str in arr) { NSLog(& ...

  3. pc端页面在移动端显示问题

    1.pc端页面在移动端显示,默认视口宽度是980px(也就是body宽度是980px),可通过meta标签设置为需要的尺寸,比如页面中元素最大宽度是1220px,则如下所示 <meta name ...

  4. nginx的ngx_http_request_t结构体

    struct ngx_http_request_s { uint32_t signature; /* "HTTP" */ //请求对应的客户端连接 ngx_connection_t ...

  5. less中的减号处理

    很奇怪,less中对减号似乎没有特别说明,很容易让人无用. @div1Width:500; @div2Width:200px; .div3cls { width:@div1Width-@div2Wid ...

  6. 解决 笔记本键盘打字母却跳出数字来,每次都要按一遍Fn+Num LK 的问题

    方法一. 开始-运行,输入“Regedit"命令进入注册表 HKEY_USERS\.DEFAULT\Control Panel\Keyboard 将 InitialKeyboardIndic ...

  7. 20169212《Linux内核原理与分析》第十一周作业

    缓冲区溢出漏洞实验 缓冲区溢出漏洞:缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器 ...

  8. Spring——jar包详解(转)

    Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

  9. 罗永浩Vs王自如:浮躁的世界该如何降温?!

    这段时间智能手机业界有一件事情炒得纷纷扬扬,可谓是波澜起伏,想必大家都多少略有耳闻.昨天中午在群里看到“罗永浩舌战王自如视频”分享,就有些‘凑热闹’的好奇点开看看.一开场的几分钟正如老罗所说的那样:两 ...

  10. Java 设计模式之代理模式

    1.  定义:为其它对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2.  类图:代理对象和被代理 ...