转自:http://blog.csdn.net/chen_jp/article/details/7983076

Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法

先来先服务(FIFO)

FIFO比较简单,hadoop中只有一个作业队列,被提交的作业按照先后顺序在作业队列中排队,新来的作业插入到队尾。一个作业运行完后,总是从队首取下一个作业运行。这种调度策略的优点是简单、易于实现,同时也减轻了jobtracker的负担。但是它的缺点也是显然的,它对所有的作业都一视同仁,没有考虑到作业的紧迫程度,另外对小作业的运行不利。

公平调度策略

这种策略在系统中配置了任务槽,一个任务槽可以运行一个task任务,这些任务就是一个大的作业被切分后的小作业。当一个用户提交多个作业时,每个作业可以分配到一定的任务槽以执行task任务(这里的任务槽可以理解为可以运行一个map任务或reduce任务)。如果把整个hadoop集群作业调度跟操作系统的作业调度相比,第一种FIFO就相当于操作系统中早期的单道批处理系统,系统中每个时刻只有一道作业在运行,而公平调度相当于多道批处理系统,它实现了同一个时刻多道作业同时运行。由于linux是多用户的,若有多个用户同时提交多个作业会怎样?在这种策略中给每个用户分配一个作业池,然后给每个作业池设置一个最小共享槽个数,什么是最小共享槽个数呢?先要理解一个最小什么意思,最小是指只要这个作业池需要,调度器应该确保能够满足这个作业池的最小任务槽数的需求,但是如何才能确保在它需要的时候就有空的任务槽,一种方法是固定分配一定数量的槽给作业池不动,这个数量至少是最小任务槽值,这样只要在作业池需要的时候就分配给它就行了,但是这样在这个作业池没有用到这么多任务槽的时候会造成浪费,这种策略实际上是这样做的,当作业池的需求没有达到最小任务槽数时,名义上是自己的剩余的任务槽会被分给其他有需要的作业池,当一个作业池需要申请任务槽的时候若系统中没有了,这时候不会去抢占别人的(也不知道抢谁的啊),只要当前一个空的任务槽释放会被立即分配给这个作业池。

在一个用户的作业池内,多个作业如何分配槽这个可以自行选择了如FIFO。所以这种调度策略分为两级:

第一级,在池间分配槽,在多用户的情况下,每个用户分配一个作业池。

第二级,在作业池内,每个用户可以使用不同的调度策略。

计算能力调度

计算能力调度和公平调度有点类似,公平调度策略是以作业池为单位分配任务槽,而计算能力调度是以队列为单位分配tasktracker(集群中一个节点),这种调度策略配置了多个队列,每个队列配置了最小额度的tasktracker数量,同公平调度策略类似,当一个队列有空闲的tasktracker时,调度器会将空闲的分配给其他的队列,当有空闲的tasktracker时,由于这时候可能有多个队列没有得到最小额度的tasktracker而又在申请新的,空闲的tasktracker会被优先分配到最饥饿的队列中去,如何衡量饥饿程度呢?可以通过计算队列中正在运行的任务数与其分得的计算资源之间的比值是否最低来判断的,越低说明饥饿程度越高。

计算能力调度策略是以队列的方式组织作业的,所以一个用户的作业可能在多个队列中,如果不对用户做一定的限制,很可能出现在多个用户之间出现严重不公平的现象。所以在选中新作业运行时候,还需要考虑作业所属的用户是否超过了资源的限制,如果超过,作业不会被选中。

对于在同一个队列中,这种策略使用的是基于优先级的FIFO策略,但是不会抢占。

Hadoop集群作业调度算法的更多相关文章

  1. Hadoop集群三种作业调度算法介绍

    Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法 先来先服务(FIFO) Hadoop中默认的调度器FIFO,它先按照作业的优先级高低,再按照到达时间的先后选择被执 ...

  2. 如何向hadoop集群定时提交一个jar作业?

    除了使用Hive,Pig来执行一个MapReduce任务,不需要专门的把项目打成jar包,提交执行,或者定时执行,因为Hive,Pig这些开源框架已经,帮我们自动打包上传了. 而有些时候,我们自己手写 ...

  3. Apache Hadoop 集群安装文档

    简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...

  4. 大数据系列(1)——Hadoop集群坏境搭建配置

    前言 关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方 ...

  5. hadoop集群安装故障解决

    nodemanager进程解决:http://blog.csdn.net/baiyangfu_love/article/details/13504849 编译安装:http://blog.csdn.n ...

  6. [转]大数据hadoop集群硬件选择

      问题导读 1.哪些情况会遇到io受限制? 2.哪些情况会遇到cpu受限制? 3.如何选择机器配置类型? 4.为数据节点/任务追踪器提供的推荐哪些规格? 随着Apache Hadoop的起步,云客户 ...

  7. 【hadoop】——window下elicpse连接hadoop集群基础超详细版

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...

  8. 实战CentOS系统部署Hadoop集群服务

    导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高 ...

  9. 腾讯大规模Hadoop集群实践 [转程序员杂志]

    TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软件Hadoop和Hive进行构建,打破了传统数据仓库不能线性扩展.可控性差的局限,并且根据腾 ...

随机推荐

  1. 标准I/O库

    前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...

  2. 更改Android应用程序的图标

    对于android应用程序的开发.默认的图标是一个小机器人,图片名称为ic_launcher.png. 可是,大多数开发人员是会将这个图标在开发过程中改为自己设计的icon. 把apk图标更改为自己设 ...

  3. unity3d 通过添加rigidBody来指明物体是动态的,以避免cache开销

    unity3d 通过添加rigidBody来指明物体是动态的,以避免cache开销. 如果不添加rigidBody,则unity会认为它是静态的,会对物理计算进行cache,但如果此物体实际上tran ...

  4. Spring的三种注入方式(Setter、构造函数和自动注入)

    一.Setter注入 这里我是希望在Student.java中调用Course.java中的内容. public class Course { public String name = "数 ...

  5. 深入理解Docker Volume(二)

      一开始,认为Volume是用来持久化的,但是这实际上不对,因为认为Volume是用来持久化的同学一定是认为容器无法持久化,所以有了Volume来帮助容器持久化,事实上,容器会一直存在,除非你删除他 ...

  6. Java:几个正则式应用(检查汉字、日期、EMAIL、手机号码的合法性,替换字符串等)

    1. 检查输入是否为合法汉字 /** * 判断输入字符是否为有效汉字 * @param str 字符 * @return 是否合法汉字 */ public static boolean isValid ...

  7. linux命令(30):tail

    linux ---tail命令 linux中tail命令---用于查看文件内容 最基本的是cat.more和less. 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /e ...

  8. 第九章 搭建Hadoop 2.2.0版本HDFS的HA配置

    Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了.这是 ...

  9. StarUML使用说明-指导手册

    1.综述 StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具.这是一个用Java语言描述的创建类图的简明手册. StarUML(简称SU),是一种创建UML类图,并能够自动生成J ...

  10. ubuntu文件夹默认列表显示

    编辑-->首选项-->视图-->列表视图