spark-scheduled调度算法】的更多相关文章

要想明白spark application调度机制,需要回答一下几个问题: 1.谁来调度? 2.为谁调度? 3.调度什么? 3.何时调度? 4.调度算法 前四个问题可以用如下一句话里来回答:每当集群资源发生变化时,active master 进程 为 所有已注册的并且没有调度完毕的application调度Worker节点上的Executor进程. "active master" , spark集群可能有多个master,但是只有一个active master 参与调度,standby…
调度算法的最基本工作之一,就是比较两个可执行的task的优先级.spark提供的FIFO和FAIR的优先级比较在SchedulingAlgorithm这个接口体现.) { ) { ) { ) { false } else {----如果所有上述的比较都相同,那么名字小的优先(哈哈,名字很重要):名字相同,则s2优先级高. s1.name < s2.name } }} 来自为知笔记(Wiz)…
FAIR  调度策略的树结构如下图所示: FAIR 调度策略内存结构 FAIR 模式中有一个 rootPool 和多个子 Pool, 各个子 Pool 中存储着所有待分配的 TaskSetMagager . 在    FAIR   模 式 中 , 需 要 先 对 子    Pool  进 行 排 序 , 再 对 子    Pool  里 面 的 TaskSetMagager 进行排序,因为 Pool 和 TaskSetMagager 都继承了 Schedulable 特质, 因此使用相同的排序算…
话说在<Spark源码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这个方法针对接收到的ReviveOffers事件进行处理.代码如下: // Make fake resource offers on all executors // 在所有的executors上提供假的资源(抽象的资源,也就是资源的对象信息,我是这么理解的) private def makeOffers() { // Filter out exec…
话说在<Spark源代码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这种方法针对接收到的ReviveOffers事件进行处理.代码例如以下: // Make fake resource offers on all executors     // 在全部的executors上提供假的资源(抽象的资源.也就是资源的对象信息,我是这么理解的)     private def makeOffers() {       /…
触发Spark scheduler的入口是调用者代码中的action操作,如groupByKey,first,take,foreach等操作.这些action操作最终会调用SparkContext.runJob方法,进而调用DAGScheduler.runJob方法,从而被spark所调度使用. 用户在编写Spark程序时,每次调用transformation操作,都会生成一个新的rdd,rdd主要包含了对之前的rdd的依赖关系,新rdd的分区规则和分区个数.聚合方法等.Spark通过这种方法最…
延迟调度算法的实现是在TaskSetManager类中的,它通过将task存放在四个不同级别的hash表里,当有可用的资源时,resourceOffer函数的参数之一(maxLocality)就是这些资源的最大(或者最优)locality级别,如果存在task满足资源的locality,那从最优级别的hash表.也就是task和excutor都有loclity级别,如果能找到匹配的task,那从匹配的task中找一个最优的task.    =====================延迟调度算法=…
spark论文中说他使用了延迟调度算法,源于这篇论文:http://people.csail.mit.edu/matei/papers/2010/eurosys_delay_scheduling.pdf 同时它也是hadoop的调度算法. Abstract delay scheduling: when the job that should be scheduled next according to fairness cannot launch a local task, it waits f…
在一个application内部,不同线程提交的Job默认按照FIFO顺序来执行,假设线程1先提交了一个job1,线程2后提交了一个job2,那么默认情况下,job2必须等待job1执行完毕后才能执行,如果job1是一个长作业,而job2是一个短作业,那么这对于提交job2的那个线程的用户来说很不友好:我这个job是一个短作业,怎么执行了这么长时间. 使用spark的公平调度算法可以在一定程度上解决这个问题,此时,job2不必等待job1完全运行完毕之后就可以获得集群资源来执行,最终的效果的就是…
本书中所使用到的测试数据.代码和安装包放在百度盘提供 下载 ,地址为https://pan.baidu.com/s/1o8ydtKA 密码:imaa 另外在百度盘提供本书附录  下载 ,地址为http://pan.baidu.com/s/1o7Busye 密码:shdf 为什么要写这本书 在过去的十几年里,由于计算机普遍应用和互联网的普及数据呈现了爆发式增长,在这个背景下Doug Cutting受到谷歌两篇论文(GFS和MapReduce)的启发下开发Nutch项目, 2006年Hadoop脱离…