热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Hadoop层级队列组织方式

作者:Dong|新浪微博:西成懂|可以转载,但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:dongxicheng.orgmapreducehadoop-hierarchy-queues在Hadoop0.20.x版本或者更早的版本,Hadoop采用了平级队列组织方式,在这种组织方

作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址:http://dongxicheng.org/mapreduce/hadoop-hierarchy-queues/ 在Hadoop 0.20.x版本或者更早的版本,Hadoop采用了平级队列组织方式,在这种组织方

在Hadoop 0.20.x版本或者更早的版本,Hadoop采用了平级队列组织方式,在这种组织方式中,管理员可将用户分到若干个扁平队列中,在每个队列中,可指定一个或几个队列管理员管理这些用户,比如杀死任意用户的作业,修改任意用户作业的优先级。然而,从资源管理角度看,仅仅按照队列组织用户是不够的,还需要将资源划分到这几个队列中,并按照一定的策略完成资源分配,这就需要Hadoop作业调度器的支持。总之,在Hadoop中,队列的组织是队列管理和资源分配的基础。

随着Hadoop应用越来越广泛,有用户提出需支持层级队列组织方式。典型的应用场景如下:在一个Hadoop集群中,管理员将所有计算资源划分给了若干个队列,每个队列对应了一个“组织”,其中有一个组织“Org1”,它分到了60%的资源,它内部包含3中类型的作业:

(1)产品线作业

(2)实验性作业—分属于三个不用的项目:Proj1,Proj2和Proj3

(3)其他类型作业

Org1管理员想更有效地控制这60%资源,比如将大部分资源分配给产品线作业的同时,能够让实验性作业和其他类型作业有最少资源保证。考虑到产品线作业提交频率很低,当有产品线作业提交时,必须第一时间得到资源,剩下的资源才给其他类型的作业,然而,一旦产品线作业运行结束,实验性作业和其他类型作业必须马上获取未使用的资源,一个可能的配置方式如下:

grid {
Org1 min=60% {
priority min=90% {
production min=82%
proj1 min=6% max=10%
proj2 min=6%
proj3 min=6%
}
miscellaneous min=10%
}
Org2 min=40%
}

这就引出来层级队列组织方式。

(1) 子队列

1)? 队列可以嵌套,每个队列均可以包含子队列。

2)? 用户只能将作业提交到最底层的队列,即叶子队列。

(2)最少容量

1)每个子队列均有一个“最少容量比”属性,表示可以使用父队列的容量的百分比

2)调度器总是优先选择当前资源使用率最低的队列,并为之分配资源。比如同级的两个队列Q1和Q2,他们的最少容量均为30,而Q1已使用10,Q2已使用12,则调度器会优先将资源分配给Q1。

3)最少容量不是“总会保证的最低容量”,也就是说,如果一个队列的最少容量为20,而该队列中所有队列仅使用了5,那么剩下的15可能会分配给其他需要的队列。

4)最少容量的值为不小于0的数,但也不能大于“最大容量”。

(3最大容量

1)? 为了防止一个队列超量使用资源,可以为队列设置一个最大容量,这是一个资源使用上限,任何时刻使用的资源总量不能超过该值。

2) 默认情况下队列的最大容量是无限大,这意味着,当一个队列只分配了20%的资源,所有其他队列没有作业时,该队列可能使用100%的资源,当其他队列有作业提交时,再逐步归还。

如何将一个队列中的资源分配给它的各个子队列?

当一个TaskTracker发送心跳请求一个新任务时,调度器会按照以下策略为之选择任务:

1)? 按照 比值{used capacity}/{minimum-capaity},对所有子队列排序;

2)? 选择一个比值{used capacity}/{minimum-capaity}最小的队列:

如果是一个叶子队列,且有处于pending状态的任务,则选择一个任务(不能超过maximum capacity);

否则,递归地从这个队列的子队列中选择任务。

3)? 如果没有找到任务,则查看下一个队列。

层级队列组织方式在 0.21.x和0.22.x中引入,但仅有Capacity Scheduler支持该组织方式(https://issues.apache.org/jira/browse/MAPREDUCE-824 ),当然,最新的YARN(Hadoop 0.23.x和2.0.x-alpha)也为Fair Scheduler增加了层级队列的支持,具体参考:https://issues.apache.org/jira/browse/YARN-187。

如何配置?

以0.21.x为例,管理员可在配置文件mapred-queues.xml中配置层级队列,配置方式如下:



Org1

production










miscellaneous






。。。。。。。

管理员可在capacity-scheduler.xml中设置一些参数的默认值和Capacity独有的配置:



mapred.capacity-scheduler.default-supports-priority
false


mapred.capacity-scheduler.default-minimum-user-limit-percent
100


mapred.capacity-scheduler.default-maximum-initialized-jobs-per-user
2


mapred.capacity-scheduler.init-poll-interval
5000


mapred.capacity-scheduler.init-worker-threads
5

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce/hadoop-hierarchy-queues/

作者:Dong,作者介绍:http://dongxicheng.org/about/


Copyright © 2012
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)

推荐阅读
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 本文探讨了Thrift作为一款支持多语言的服务开发框架,其在体积、功能、扩展性以及多协议支持等方面的显著优势。特别地,Thrift作为一种RPC(远程过程调用协议)框架,非常适合用于构建可扩展且低耦合的分布式服务系统。文章通过多种编程语言对Thrift服务进行了性能测试,并提供了详细的测试结果。 ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文详细介绍了Java中com.sun.xml.bind.v2.runtime.XMLSerializer类下的childAsRoot()方法,并提供了多个实际应用的代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • 本文详细介绍了 `org.apache.hadoop.hdfs.server.namenode.FSNamesystem.shouldUseDelegationTokens()` 方法的用途和实际应用场景,并提供了多个代码示例以帮助开发者更好地理解和使用该方法。 ... [详细]
  • Hadoop Datanode DataXceiver 错误处理问题
    Ambari 每分钟会向 Datanode 发送一次“ping”请求以确保其正常运行。然而,Datanode 在处理空内容时没有相应的逻辑,导致出现错误。 ... [详细]
author-avatar
turneerpelliccia_291
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有