随着MapReduce的流行,其开源实现Hadoop也变得越来越受推崇。在Hadoop系统中,有一个组件非常重要,那就是调度器,它的作用是将系统中空闲的资源按一定策略分配给作业。在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。Hadoop中常见的调度器有三种,分别为:

(1)默认的调度器FIFO

Hadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。

(2) 计算能力调度器Capacity Scheduler

支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。

(3)公平调度器Fair Scheduler

同计算能力调度器类似,支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,具体算法参见我的博文《Hadoop公平调度器算法解析》

实际上,Hadoop的调度器远不止以上三种,最近,出现了很多针对新型应用的Hadoop调度器。

(4)适用于异构集群的调度器LATE

现有的Hadoop调度器都是建立在同构集群的假设前提下,具体假设如下:

1)集群中各个节点的性能完全一样

2)对于reduce task,它的三个阶段:copy、sort和reduce,用时各占1/3

3)同一job的同类型的task是一批一批完成的,他们用时基本一样。

现有的Hadoop调度器存在较大缺陷,主要体现在探测落后任务的算法上:如果一个task的进度落后于同类型task进度的20%,则把该task当做落后任务(这种任务决定了job的完成时间,需尽量缩短它的执行时间),从而为它启动一个备份任务(speculative task)。如果集群异构的,对于同一个task,即使是在相同节点上的执行时间也会有较大差别,因而在异构集群中很容易产生大量的备份任务。

LATE(Longest Approximate Time to End,参考资料[4])调度器从某种程度上解决了现有调度器的问题,它定义三个阈值:SpeculativeCap,系统中最大同时执行的speculative task数目(作者推荐值为总slot数的10%); SlowNodeThreshold(作者推荐值为25%):得分(分数计算方法见论文)低于该阈值的node(快节点)上不会启动speculative task;SlowTaskThreshold(作者推荐值为25%):当task进度低于同批同类task的平均进度的SlowTaskThreshold时,会为该task启动speculative task。它的调度策略是:当一个节点出现空闲资源且系统中总的备份任务数小于SpeculativeCap时,(1)如果该节点是快节点(节点得分高于SlowNodeThreshold),则忽略这个请求。 (2)对当前正在运行的task按估算的剩余完成时间排序 (3)选择剩余完成时间最大且进度低于SlowTaskThreshold的task,为该task启动备份任务。

(5)适用于实时作业的调度器Deadline Scheduler和Constraint-based Scheduler

这种调度器主要用于有时间限制的作业(Deadline Job),即给作业一个deadline时间,让它在该时间内完成。实际上,这类调度器分为两种,软实时(允许作业有一定的超时)作业调度器和硬实时(作业必须严格按时完成)作业调度器。

Deadline Scheduler(参考资料[5])主要针对的是软实时作业,该调度器根据作业的运行进度和剩余时间动态调整作业获得的资源量,以便作业尽可能的在deadline时间内完成。

Constraint-based Scheduler(参考资料[6])主要针对的是硬实时作业,该调度器根据作业的deadline和当前系统中的实时作业运行情况,预测新提交的实时作业能不能在deadline时间内完成,如果不能,则将作业反馈给用户,让他重调整作业的deadline。

————————————————————————————————————————–

参考资料

【1】    Capacity Scheduler 介绍:http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html

下载:http://hadoop.apache.org/common/docs/r0.20.0/capacity_scheduler.pdf

【2】    Fair Scheduler 介绍:http://hadoop.apache.org/common/docs/r0.20.2/fair_scheduler.html

下载:http://svn.apache.org/repos/asf/hadoop/mapreduce/trunk/src/contrib/fairscheduler/designdoc/fair_scheduler_design_doc.pdf

【3】    Fair Scheduler 论文:M. Zaharia, D. Borthakur, J. S. Sarma, K. Elmeleegy, S. Shenker, and I. Stoica, “Job scheduling for multi-user mapreduce clusters,” EECS Department, University of California, Berkeley, Tech. Rep., Apr 2009.

【4】    C. Tian, H. Zhou, Y. He, and L. Zha, “A dynamic mapreduce scheduler for heterogeneous workloads,” in Proceedings of the 2009 Eighth International Conference on Grid and Cooperative Computing, ser. GCC ’09. Washington, DC, USA: IEEE Computer Society, 2009, pp.218–224. [Online]. Available: http://dx.doi.org/10.1109/GCC.2009.19

【5】    Deadline Scheduler 论文:J. Polo, D. Carrera, Y. Becerra, J. Torres, E. Ayguade and, M. Steinder, and I. Whalley, “Performance-driven task co-scheduling for mapreduce environments,” in Network Operations and Management Symposium (NOMS), 2010 IEEE, 2010, pp. 373 –380.

【6】    Constraint-based Scheduler 论文K. Kc and K. Anyanwu, “Scheduling hadoop jobs to meet deadlines,” in 2nd IEEE International Conference on Cloud Computing Technology and Science (CloudCom), 2010, pp. 388 –392.

转自  http://dongxicheng.org/mapreduce/hadoop-schedulers/

Hadoop的调度器总结(转)相关推荐

  1. Hadoop的调度器总结

    随着MapReduce的流行,其开源实现Hadoop也变得越来越受推崇.在Hadoop系统中,有一个组件非常重要,那就是调度器,它的作用是将系统中空闲的资源按一定策略分配给作业.在Hadoop中,调度 ...

  2. 如何编写Hadoop调度器

    1. 编写目的 在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器,然后在配置文件中指定相应的调度器,这样,当Hadoop集群启动时,便会加载该调度器.当前Hadoo ...

  3. Hadoop多用户作业调度器和安全机制的自我总结

    在掌握Hadoop平台上,一直有两个疑问困扰着: 1)Hadoop的用户和用户组和Linux操作系统用户和用户组之间的关系: 2)多用户下,Hadoop平台如何管理以保证作业调度和文件安全: 先说下H ...

  4. CDH 版本Hadoop Yarn配置容量调度器(默认是公平调度器)

    配置中进行如下调整: 其实就是在在yarn-site.xm中添加yarn.resourcemanager.scheduler.class,修改成容量调度器: <property><n ...

  5. hadoop 2.9.2 yarn配置公平调度器

    官网链接 任何文档都没有比官网提供的更权威.更准确 https://hadoop.apache.org/docs/r2.9.2/hadoop-yarn/hadoop-yarn-site/FairSch ...

  6. 配置hadoop 使用fair scheduler调度器

    hadoop版本为cloudera hadoop cdh3u3 配置步骤为 1. 将$HADOOP_HOME/contrib/fairscheduler/hadoop-fairscheduler-0. ...

  7. 在win7上的eclipse向hadoop提交作业异常-权限/设置调度器

    第一个问题,在win7上的eclipse向hadoop提交作业时,没有权限,异常信息如下: Java代码   Caused by: org.apache.hadoop.ipc.RemoteExcept ...

  8. Yarn 组件的指挥部 – 调度器Scheduler

    linux基础 为hadoop集群的搭建扫清了障碍,也为内存的管理,文件系统的管理扫清了障碍 接着到Hadoop的阶段,首先做集群的安装,深入到使用这两个核心的组件,分布式文件系统HDFS,解决大量数 ...

  9. Hadoop的资源调度器

    Hadoop的资源调度器 概念 资源调度器分类 FIFO(先进先出调度器) Capacity Scheduler(容量调度器) Fair Scheduler(公平调度器) 概念 目前,Hadoop作业 ...

最新文章

  1. 自定义Visual Studio IntelliTrace 智能跟踪
  2. 云端能力知几许?12人众测华为云企业级Kubernetes集群实力
  3. Python入门100题 | 第071题
  4. BeautifulSoup库之find_all函数_Python系列学习笔记
  5. iPhone12详细拆解报告出炉!(附主要器件清单)
  6. javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点...
  7. 手机处理器排行榜2019_手机处理器AI性能排行榜出炉,高通骁龙第一,华为排在第十名...
  8. 【转】UINavigationController 直接返回到第一级目录
  9. 贞炸了!上线之后,消息收不到了!
  10. 探索科学的奥秘之门Science,Cell, Nature
  11. Mscomm32.ocx注册
  12. 【每周一文】Supervised Sequence Labelling with Recurrent Neural Networks
  13. Graphene-SGX 总结
  14. 计数器设计及仿真验证
  15. 百度地图转换腾讯地图 php,用PHP实现腾讯地图和百度地图的相互转换范例
  16. 想转行it , 培训还是自学?
  17. 运筹说 第92期|爱思唯尔“高被引学者“
  18. 开源公告|腾讯tmagic-editor页面可视化编辑器对外开源
  19. 3D真人手办,做一个迷你版的自己
  20. php和java做众筹系统哪个好,Java版众筹系统和PHP众筹系统对比分析

热门文章

  1. Teamcenter2007 开发环境搭建和技巧
  2. python中英文切换_vue根据按钮进行中英文切换
  3. mysql 5.6 外键_mysql 5.6外键约束错误;没有发生在5.5
  4. 南开大学滨海学院计算机科学系,【公示】南开大学滨海学院2019届“优秀毕业生”、“十佳毕业生” 评选结果公示...
  5. 将图片文件通过byte[]字节数组Base64加密后给前端显示
  6. BootStrap中Model模态框点击除了×号和关闭按钮外的其他区域不消失
  7. JS获取元素的第一个子节点
  8. 把ct图像像素值转化为_CT爱好者的点点滴滴
  9. 如何查看JVM内存中的对象和执行中的方法
  10. ibatis调用mysql带OUT类型参数的存储过程并获取返回值