Fair Scheduler调度器同步心跳分配任务的过程简单来讲会经历以下环节:

  1、 对map/reduce是否已经达到资源上限的循环判断

  2、 对pool队列根据Fair算法排序

  3、然后循环pool队列,在pool中的job队列根据Fair算法排序,循环job,选择task

  4、如果选择到一个task,跳出pool的循环,然后重新对pool排序,重复步骤2

Fair Scheduler调度策略对于pool和job的调度算法都是一致的,先解释在调度算法中的几个重要变量:

  minshare : Minimum share slots assigned to the schedulable 最小共享量,pool池的最小共享量为每个资源池需要分配的最小的map或reducer slots数,也就是配置文件中的minMaps或minReduces,Job的minShare定义为0

  demand :  This is defined as number of currently running tasks + number of unlaunched tasks (tasks that are either not yet launched or need to be speculated)。简单概括就是JOB的slot需求量,其结果通过(正在运行的Tasks数量 + 未运行的Tasks数量)计算得出,pool池的demand是池中所有Job的demand之和。FairScheduler会启动一个UpdateThread线程来定时更新Demand值,更新间隔可以通过mapred.fairscheduler.update.interval配置,未配置或默认情况下是2500毫秒

  runningTasks: 正在运行的Tasks数量,pool池的runningTasks值等于之中所有job的runningTasks之和。

  weight:权重。Pool的权重为配置文件中weight配置项,job的权重为和优先级相关,例如normal=1.0,high=2.0,very high=4.0等,但是job的权重在运行过程中还会重算,如果开启了mapred.fairscheduler.sizebasedweight配置项,那么weight会重新计算:    

weight = Math.log1p(demand) / Math.log(2);

weight *= getPriorityFactor(job.getPriority());

也就是说job权重会随着job的slot需求量的变化而变化。如果开启了mapred.fairscheduler.weightadjuster配置项,那么weight的计算还会得到重新计算,Weightadjuster还需要配合mapred.newjobweightbooster.factor和mapred.newjobweightbooster.duration两个配置项来使用,factor为权重因子,duration为权重期限,如果满足:【当前时间(currentTime)-jobStartTime < duration】也就是说还在权重调整期限内,那么weight = weight*factor。

  Fair Scheduler核心思想就是为了让尽可能保证所有的作业都能够获得等量的资源份额,首先会考虑作业的资源亏欠度来选择作业,然后才是考虑优先级,所谓资源亏欠度大体上可以理解为所得到的资源和当前所需资源的比值,下面就详细介绍Fair Scheduler核心调度算法,本质上其实就是对pool或job进行一定规则的排序操作,过程如下:

1、 先计算job的minShare,minShare等于minShare和demand值两者取小

2、 判断runningTasks是否小于minShare,如果是的话,优先级高

3、 步骤2不满足的话,那么判断runningTasks/max(mindshare,1.0)的值,值小的优先

4、 如果步骤3中的runningTasks/max(mindshare,1.0)值一样,判断runningTasks/weight的值,前面讲到如果开启了sizebasedweight配置项,那么作业就会随着作业的运行过程不断的变化其weight权重值,对于大作业权重值的变化曲线会类似于一个抛物线。

5、 如果权重值还一致,最后对比startTime值。

欢迎加入Hadoop技术群进行交流:147681830

Hadoop学习之--Fair Scheduler作业调度分析的更多相关文章

  1. Hadoop学习之--Capaycity Scheduler源码分析

    Capacity Scheduler调度策略当一个新的job是否允许添加到队列中进行初始化,判断当前队列和用户是否已经达到了初始化数目的上限,下面就从代码层面详细介绍整个的判断逻辑.Capaycity ...

  2. Hadoop学习笔记—20.网站日志分析项目案例

    1.1 项目来源 本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖.回帖,如图1所示. 图1 项目来源网站-技术学习论坛 本次实践的目的就在于 ...

  3. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例 ...

  4. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例 ...

  5. Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:http://www.cnbl ...

  6. Hadoop学习之--Capaycity Scheduler配置参数说明

    以下列举出来的是capacity关于queue和user资源使用量相关的参数说明: mapred.capacity-scheduler.queue.xxx.capacity: 队列的资源容量百分比,所 ...

  7. Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler) 分析

    转会http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/index.html? ca=drs-cn-0125 ...

  8. Fair Scheduler中的Delay Schedule分析

    延迟调度的主要目的是提高数据本地性(data locality),减少数据在网络中的传输.对于那些输入数据不在本地的MapTask,调度器将会延迟调度他们,而把slot分配给那些具备本地性的MapTa ...

  9. 学习Hadoop+Spark大数据巨量分析与机器学习整合开发-windows利用虚拟机实现模拟多节点集群构建

    记录学习<Hadoop+Spark大数据巨量分析与机器学习整合开发>这本书. 第五章 Hadoop Multi Node Cluster windows利用虚拟机实现模拟多节点集群构建 5 ...

随机推荐

  1. 新环境配置与使用Vim指南

    1.下载源码 git clone git@github.com:vim/vim.git 2.编译 1.安装依赖软件 sudo apt-get install libncurses5-dev libgn ...

  2. jsp中@import导入外部样式表与link链入外部样式表的区别

    昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级.今天就这个问题具体总结如下:   先解释一下网页添加cs ...

  3. Finalization

    1.what is the main disadvantage of garbage collection? Typically, garbage collection has certain dis ...

  4. 文件重定向函数freopen

    头文件:stdio.h FILE *freopen( const char *filename, const char *mode, FILE *stream ); 参数说明: filename:需要 ...

  5. $.getJSON ashx 跨域

    context.Response.AddHeader("Access-Control-Allow-Origin", "*");

  6. UC编程之网络通信(TCP/UDP)

    网络常识 OSI 7层模型(人机交互) 物理层.数据链路层.网络层.传输层.会话层.表现层.应用层 常见协议: tcp/udp/ip/ftp/http... IP地址--就是计算机在网络中的地址,是一 ...

  7. Java里面instanceof怎么实现的

    开始完全一头雾水呀,后面看了Java指令集的介绍,逐渐理解了. https://www.zhihu.com/question/21574535/answer/18998914 下面这个答案比较直白 你 ...

  8. hdu 4655 Cut Pieces 找规律

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4655 题意:给你一组整数,代表每个木块所能涂成的颜色种数(编号1~ai),相邻的两块所能涂成的颜色如果是一 ...

  9. BZOJ3028: 食物

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3028 题解:列出母函数乘起来化简之后再展开,用插板法即可. 代码: #include<c ...

  10. 《C++ Primer 4th》读书笔记 序

    注:本系列读书笔记是博主写作于两三年前的,所以是基于<C++ Primer>第四版的,目前该书已更新至第五版,第五版是基于C++11标准的,貌似更新挺多的.博主今年应届硕士毕业,如若过阵子 ...