【发布时间】:2014-01-08 17:07:22
【问题描述】:
我们能否在同一个 hadoop 集群中同时使用公平调度器和容量调度器。哪个调度程序好且有效。谁能帮帮我?
【问题讨论】:
标签: hadoop mapreduce job-scheduling
我们能否在同一个 hadoop 集群中同时使用公平调度器和容量调度器。哪个调度程序好且有效。谁能帮帮我?
【问题讨论】:
标签: hadoop mapreduce job-scheduling
我认为两者不能同时使用。这也没有意义。为什么要在同一个集群中同时使用这两种调度方式?由于特定的用例,两种调度算法都出现了。
公平调度是一种将资源分配给作业的方法,使得 平均而言,随着时间的推移,所有工作都会获得同等份额的资源。什么时候 有一个作业正在运行,该作业使用整个集群。什么时候 提交其他作业,释放的任务槽分配给 新作业,以便每个作业获得大致相同的 CPU 时间。 与形成作业队列的默认 Hadoop 调度程序不同,这 让短期工作在合理的时间内完成,而不至于长期挨饿 工作。这也是一个在数字之间共享集群的合理方式 的用户。最后,公平分享也适用于工作优先级—— 优先级被用作权重来确定总数的一部分 计算每个作业应该获得的时间。
Fair Scheduler 源于 Facebook 需要在多个用户之间共享其数据仓库。 Facebook 开始使用 Hadoop 来管理其每天积累的大量内容和日志数据。最初,每天只有少数工作需要在数据上运行以构建报告。然而,随着 Facebook 内的其他团队开始使用 Hadoop,生产工作的数量增加了。此外,分析师开始使用数据仓库通过 Hive(Facebook 的类似 SQL 的 Hadoop 查询语言)进行临时查询,并且随着开发人员对数据集进行试验,提交了更多大型批处理作业。 Facebook 的数据团队考虑为生产作业构建一个单独的集群,但认为这将非常昂贵,因为必须复制数据并且两个集群的利用率都会很低。相反,Facebook 构建了 Fair Scheduler,它在多个作业之间平均分配资源,并且还支持生产作业的容量保证。 Fair Scheduler 基于三个概念:
调度程序还包括许多易于管理的功能,包括在运行时重新加载配置文件以更改池设置而无需重新启动集群、限制每个用户和每个池运行的作业以及使用优先级权衡不同工作的份额。
CapacityScheduler 旨在允许共享大型集群 同时给予每个组织最低容量保证。这 中心思想是 Hadoop Map-Reduce 中的可用资源 集群在多个组织之间进行分区,这些组织共同 根据计算需求为集群提供资金。还有一个额外的好处 一个组织可以访问任何未被使用的过剩产能 其他。这为组织提供了弹性 经济实惠的方式。
Yahoo 的 Capacity Scheduler 提供了与 Fair Scheduler 类似的功能,但采用了不同的理念。在容量调度程序中,您定义了许多命名队列。每个队列都有可配置数量的 map 和 reduce 槽。调度程序在每个队列包含作业时为其分配容量,并在队列之间共享任何未使用的容量。但是,在每个队列中,都使用了具有优先级的 FIFO 调度,除了一个方面 - 您可以限制每个用户运行任务的百分比,以便用户平等地共享集群。换句话说,容量调度器尝试为每个用户和每个组织模拟一个单独的 FIFO/优先级集群,而不是在所有作业之间执行公平共享。容量调度器还支持在每个队列上配置等待时间,之后如果它低于其公平份额,则允许抢占其他队列的任务。
因此,这将归结为您的需求和设置,以便决定您应该使用哪个调度程序。
Apache hadoop 现在支持这两种类型的调度。更详细的信息可以在以下链接中找到:
【讨论】: