公平调度算法分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在 Hadoop-0.21.0 版本中,Fair Scheduler 代码结构有了较大变化(注意,最近的 0.23.0 版本 与 0.21.0 基本相同),且核心调度算法也做了重大修改,使之更合理,更完善。本文主要分 析了新版 Hadoop 中公平调度器的新特性。 如果你不了解旧版本 Hadoop 的Fair Scheduler 算法,可参考这篇文章:Hadoop-0.20.2 公平 调度器算法解析 。 1. Hadoop-0.21.0 版本公平调度器新特性 (1) 将之前(0.21.0 之前版本)的基于缺额的调度算法改为层次调度算法 (2) 支持资源抢占 (3) 添加 delay scheduling 机制,使调度策略更优。 (4) 每个队列的调度策略可以配置,支持两种调度策略,分别为 FIFO 和 FAIR ,不管采用哪 种调度策略,以上三个功能全部支持。 2. 层次调度算法 2.1 改进动机 之前的 Fair Scheduler 采用了基于缺额调度算法,主要思想是:将作业的优先级转化成权重, 优先级越高权重越大,而权重越大,获得的资源越多,通过权重计算出的资源就是“公平共 享量” ,这是理想状态下,每个作业应得到资源量,而在实际情况下,可能获取不到这些资 源,因而可以得到一个“理想和现实之间的差距” ,为了是这个差距更能体现实际意义,又将 时间融合进去,即:“理想和现实之差乘以时间” ,这就是缺额(缺额是累加的,如果一个作 业为获得资源,其缺额会随着时间不段增大,直到能够排到队列前头)。每次出现空闲资源 时,优先选择缺额大的作业,以便达到公平调度的目的。 这个调度器在 Yahoo 和 Cloudera 内部均被采用,但在使用过程中,会出现以下现象: (1) 用户提交两个作业,其中一个提交时间早一些,因而占下了集群中所有的资源,而第 二个作业以一半集群资源的速度积累缺额,直到一段时间之后,它的缺额才足以使得达到可 以获取资源的资格; (2 ) 当用户继续提交大量作业时,由于第二个作业的缺额非常大,则后面的作业完全获取 不到资源。 要消除这种现象,则需要对调度算法进行改进 一种改进方法是每隔一段时间重置缺额,而新版公平调度器则采用了以下算法。 2.2 新调度算法 首先介绍几个概念: Pool :资源池,或者作业池。 每个 pool 里有一定量的资源(管理员配置),每个用户属于 某个 pool ,其作业可使用这个pool 中的资源,可限定每个pool 中最大并发作业数和每个用 户最多提交作业数。默认情况下,一个 linux 用户对应一个 pool ,而管理员也可以配以一个 linux group 对应一个 pool 。pool 实际上也可以称为 group 或者队列。 最小共享量:管理员可给每个 pool 配置一个最小共享量,调度器在分配资源时,需要保证 每个 pool 中的作业至少获取该数目的资源。一个常见的应用场景是,对产品pool 设置最小 共享量,而测试 pool 不设置,这样,当可用资源有限时时,优先保证产品 pool 有资源可用。 公平共享量:当集群中存在多个 pool 时,某些pool 中的资源可能用不了,这时候调度器会 自动将这些pool 中剩余的资源共享给其他需要的pool ,其他这些pool 获取的共享资源多少 主要由其 pool weight 决定,pool weight 越大,获取的资源越多。 一个 pool 的最小共享量加 上其获取的共享资源数目,就是公平共享量。 下面正式介绍公平调度器的层次调度算法,大的思想与 Capacity Scheduler 类似,首先选择 一个 pool ,然后从该pool 中选择一个job ,最后从该job 中选择一个locality 的task 。 其中,选择 pool 和job 的策略相同,均采用了FairShareComparator 比较器对pool 或者job 进行排序,然后从头到尾扫描队列,选出合适的 pool 或者job 。在FairShareComparator 中, Schedulable 封装了是一个 pool 或者job 的基本信息。 1 public static class FairShareComparator implements ComparatorSchedulable { 2 @Override 3 public int compare(Schedulable s1, Schedulable s2) { 4 double minSh

文档评论(0)

139****2704 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档