`
退役的龙弟弟
  • 浏览: 451836 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop调度器

 
阅读更多

转自:http://www.ibm.com/developerworks/cn/opensource/os-hadoop-scheduling/

自从可插入式调度器实现以来,已开发了多种调度器算法。接下来的章节将会介绍各种算法以及各自适用的情况。

FIFO 调度器

集成在 JobTracker 中的原有调度算法被称为 FIFO。在 FIFO 调度中,JobTracker 从工作队列中拉取作业,最老的作业最先。这种调度方法不会考虑作业的优先级或大小,但很容易实现,而且效率很高。

公平调度

公平共享调度器的核心概念是,随着时间推移平均分配工作,这样每个作业都能平均地共享到资源。结果是只需较少时间执行的作业能够访问 CPU,那些需要更长时间执行的作业中结束得迟。这样的方式可以在 Hadoop 作业之间形成交互,而且可以让 Hadoop 集群对提交的多种类型作业作出更大的响应。公平调度器是由 Facebook 开发出来的。

Hadoop 的实现会创建一组池,将作业放在其中供调度器选择。每个池会分配一组共享以平衡池中作业的资源(更多的共享意味着作业执行所需的资源更多)。默认情况下,所有池的共享相等,但可以进行配置,根据作业类型提供更多或更少的共享。如果需要的话,还可以限制同时活动的作业数,以尽量减少拥堵,让工作及时完成。

为了保证公平,每个用户被分配一个池。在这样的方式下,如果一个用户提交很多作业,那么他分配的集群资源与其他用户一样多(与他提交的工作数无关)。无论分配到池的共享有多少,如果系统未加载,那么作业收到的共享不会被使用(在可用作业之间分配)。

调度器实现会追踪系统中每个作业的计算时间。调度器还会定期检查作业接收到的计算时间和在理想的调度器中应该收到的计算时间的差距。会使用该结果来确定任务的亏空。调度器作业接着会保证亏空最多的任务最先执行。

在 mapred-site.xml 文件中配置公平共享。该文件会定义对公平共享调度器行为的管理。一个 XML 文件(即mapred.fairscheduler.allocation.file 属性)定义了每个池的共享的分配。为了优化作业大小,您可以设置mapread.fairscheduler.sizebasedweight 将共享分配给作业作为其大小的函数。还有一个类似的属性可以通过调整作业的权重让更小的作业在 5 分钟之后运行得更快 (mapred.fairscheduler.weightadjuster)。您还可以用很多其他的属性来调优节点上的工作负载(例如某个 TaskTracker 能管理的 maps 和 reduces 数目)并确定是否执行抢占。参见 参考资料 中所有可配置参数的链接。

容量调度器

容量调度器的原理与公平调度器有些相似,但也有一些区别。首先,容量调度是用于大型集群,它们有多个独立用户和目标应用程序。由于这个原因,容量调度能提供更大的控制和能力,提供用户之间最小容量保证并在用户之间共享多余的容量。容量调度是由 Yahoo! 开发出来的。

在容量调度中,创建的是队列而不是池,每个队列的 map 和 reduce 插槽数都可以配置。每个队列都会分配一个保证容量(集群的总容量是每个队列容量之和)。

队列处于监控之下;如果某个队列未使用分配的容量,那么这些多余的容量会被临时分配到其他队列中。由于队列可以表示一个人或大型组织,那么所有的可用容量都可以由其他用户重新分配使用。

与公平调度另一个区别是可以调整队列中作业的优先级。一般来说,具有高优先级的作业访问资源比低优先级作业更快。Hadoop 路线图包含了对抢占的支持(临时替换出低优先级作业,让高优先级作业先执行),但该功能尚未实现。

另一个区别是对队列进行严格的访问控制(假设队列绑定到一个人或组织)。这些访问控制是按照每个队列进行定义的。对于将作业提交到队列的能力和查看修改队列中作业的能力都有严格限制。

可在多个 Hadoop 配置文件中配置容量调度器。队列是在 hadoop-site.xml 中定义,在 capacity-scheduler.xml 中配置。可以在 mapred-queue-acls.xml 中配置 ACL。单个的队列属性包括容量百分比(集群中所有的队列容量少于或等于 100)、最大容量(队列多余容量使用的限制)以及队列是否支持优先级。更重要的是,可以在运行时调整队列优先级,从而可以在集群使用过程中改变或避免中断的情况。

其他方法

虽然本身不是调度器,但 Hadoop 也支持从大型物理集群内部提供虚拟集群的概念,这称之为 Hadoop On Demand (HOD)。HOD 方法使用 Torque 资源管理器根据虚拟集群的需要进行节点分配。有了分配的节点,HOD 系统自动准备好配置文件,然后根据虚拟集群中的节点进行初始化。虚拟化之后,就能以相对对立的方式使用 HOD 虚拟集群。

HOD 还具有自适应性,在工作负载变化时会收缩。如果某个时间段内检测到没有运行的作业,HOD 会自动解除虚拟集群的节点分配。这种方式可以保证整个物理集群资产的使用效率达到最高。

HOD 对于在云基础架构中部署 Hadoop 集群来说,是个很有意思的模型。它还有个优势,通过与节点尽量少的共享,从而有了更大的安全性,而且某些情况下,由于节点中多个用户作业之间内部缺乏竞争,性能得到提升。

分享到:
评论

相关推荐

    Hadoop任务调度器

    如果要编写自己的Hadoop调度器,需要深入了解Hadoop调度器的接口和扩展机制。开发者可以继承原有的调度器类,重写其调度逻辑,或者添加新的调度策略和规则。在Hadoop社区,编写自定义调度器是一个较为高级的开发任务...

    Hadoop 中的调度

    传统的Hadoop调度器采用的是First In First Out(FIFO)策略,即按作业提交的顺序分配资源,但这种方法并不适用于复杂的工作负载和多用户环境。 在2008年之前,Hadoop仅支持与JobTracker紧密耦合的单一调度器,这...

    hadoop 容量调度器

    《深入理解Hadoop容量调度器》 在Hadoop生态系统中,资源调度是集群高效运行的关键。容量调度器(Capacity Scheduler)作为Hadoop MapReduce的重要组件,旨在确保多用户、多任务公平共享集群资源。它通过设定不同的...

    satisfaction:下一代 Hadoop 调度器

    满意下一代 Hadoop 调度器跑步要运行,请运行willrogers play 项目 sbt> project willrogers> run默认端口为 9000发展查看sbt-satisfy目录下的说明部署要部署,您需要创建一个 RPM sbt> project willrogers> rpm:...

    HADOOP 的工作调度器介绍

    HADOOP 工作调度器介绍 HADOOP 作为大数据时代的重要技术之一,已经被广泛应用于各个行业中,其中任务调度器是 HADOOP 的一个重要组件。本文将介绍 HADOOP 工作调度器的相关知识点,主要基于 FACEBOOK 的使用经验。...

    基于粒子群优化算法的Hadoop调度算法研究.pdf

    默认调度器FIFO(First-In-First-Out)。FIFO将所有用户提交的作业都放到一个队列中,以便按照提交的顺序来执行任务。该算法简单易于实现,但是存在以下缺陷: * 无法考虑资源负载均衡问题 * 无法实现任务间的并行...

    Hadoop公平调度器指南.pdf

    ### Hadoop公平调度器知识点详解 #### 一、公平调度器概述 **公平调度器**(Fair Scheduler)是Hadoop中的一种插件式Map/Reduce调度器,它为大规模集群提供了一种有效的资源共享机制。其核心目标是确保随着时间的...

    hadoop调度指南

    ### Hadoop公平调度器深入解析 #### 目的与引言 本文旨在深入解析Hadoop中的公平调度器(Fair Scheduler),这一组件为Hadoop提供了一种先进的资源共享机制,尤其适用于大规模集群环境。与Hadoop传统的调度策略...

    Hadoop集群作业的调度算法

    Hadoop提供了一种默认的调度算法,即**FIFO(First-In-First-Out)调度器**。这种调度器按照作业提交的时间顺序来执行作业,简单易用,但在处理不同类型和优先级的作业时可能会导致资源浪费和不公平的问题。 随着...

    hadoop面试题分解.pdf

    下面是 Hadoop 面试题的解析,涵盖了 Hadoop 的安装、配置、核心组件、调度器、MapReduce 编程等方面。 1. Hadoop 安装配置 Hadoop 安装配置需要完成以下步骤: 1. 使用 root 账户登录 2. 修改 IP 和主机名 3. ...

    Hadoop技术答疑汇总

    #### 二、Hadoop调度器与负载均衡 - **知识点概述**:Hadoop的调度器负责任务的分配和执行,包括Capacity Scheduler、Fair Scheduler等多种类型。其中,Fair Scheduler旨在实现资源公平分配的同时考虑到了一定程度...

    Hadoop技术-YARN资源调度器.pptx

    "Hadoop技术-YARN资源调度器" Hadoop技术作为大数据处理的重要技术之一,YARN(Yet Another Resource Negotiator)作为Hadoop的资源管理层,负责管理和分配集群资源。YARN资源调度器是Hadoop YARN中最核心的组件之...

    交通信息分布式处理中的Hadoop调度算法优化.pdf

    针对当前城市交通信息数据量庞大且复杂、地理分布广泛的问题,文章《交通信息分布式处理中的Hadoop调度算法优化》介绍了通过改进的计算能力调度算法,对海量数据进行有效挖掘,服务于城市智能交通。文章由孙卫真、...

Global site tag (gtag.js) - Google Analytics