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

(注:本文介绍的Hadoop调度器不够系统化,如果想了解更系统化的Hadoop调度器,可阅读我的最新书籍《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》(购买说明)第10章 “Hadoop多用户作业调度器分析”,分析了当前比较流行的FIFO、Capacity个Fair三种调度器的配置方法、实现机制和优缺点对比,当然,也介绍了其他类型的几种调度器。)

(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】   Matei Zaharia, Andy Konwinski, Anthony D. Joseph, Randy Katz, Ion Stoica “Improving MapReduce Performance in Heterogeneous Environments,”

【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. vc6.0打开工程出现程序崩了的原因
  2. 两年AI研究经验(教训)总结,进来看看吧! 1
  3. 使用async读取异步数据
  4. Java的位运算符具体解释实例——与(amp;)、非(~)、或(|)、异或(^)
  5. 360手机浏览器_扰乱网络传播秩序!搜狗、360等手机浏览器国家网信办纳入首批重点整治范围...
  6. 突发!Java首度“落泪”,愿永久祝福Python!网友:我也想哭!
  7. rpcbind服务没法开启问题
  8. 数学建模竞赛代码及论文降重方法
  9. 【运维必备-堡垒机】
  10. 微信个人号有哪些好玩的自动回复?自动回复话术分享
  11. 数独高阶技巧之八——SDC
  12. ppt编辑图片进阶功能
  13. Show一下拿的奖杯
  14. 番茄钟工作法:你真的了解番茄钟么?
  15. 从云服务器硬盘更换认识备份、快照、镜像
  16. 【翻译】利用加速度求解位置的算法——三轴传感器
  17. PP模块常用数据库表
  18. Qt编写安防楼宇对讲管理平台源码
  19. 安卓自动无限试玩,只需一根WiFi玩法
  20. B - Triple Shift(偶排列)

热门文章

  1. Python中最常用十大图像处理库详细介绍
  2. 美油合约收跌-37.65美元史上首次为负 交割没地存放拼命抛售
  3. GMIS 2017大会Saman Farid演讲:人工智能时代创业者面对的挑战和机会
  4. 房价波动5%很正常 房地产市场绝不会崩盘
  5. java面向对象思想如何理解
  6. 白话Elasticsearch14-深度探秘搜索技术之基于multi_match 使用most_fields策略进行cross-fields search弊端
  7. 我为什么重新开始学习数学?
  8. Java代码在计算机中的三个阶段与反射
  9. 如何修改cmd控制台默认编码为utf-8
  10. linux主机电影源码,求::totem电影播放机源代码!!!!