【问题标题】:Can we use both Fair scheduler and Capacity Scheduler in the same hadoop cluster我们可以在同一个hadoop集群中同时使用公平调度器和容量调度器吗
【发布时间】:2014-01-08 17:07:22
【问题描述】:

我们能否在同一个 hadoop 集群中同时使用公平调度器和容量调度器。哪个调度程序好且有效。谁能帮帮我?

【问题讨论】:

    标签: hadoop mapreduce job-scheduling


    【解决方案1】:

    我认为两者不能同时使用。这也没有意义。为什么要在同一个集群中同时使用这两种调度方式?由于特定的用例,两种调度算法都出现了。

    公平调度是一种将资源分配给作业的方法,使得 平均而言,随着时间的推移,所有工作都会获得同等份额的资源。什么时候 有一个作业正在运行,该作业使用整个集群。什么时候 提交其他作业,释放的任务槽分配给 新作业,以便每个作业获得大致相同的 CPU 时间。 与形成作业队列的默认 Hadoop 调度程序不同,这 让短期工作在合理的时间内完成,而不至于长期挨饿 工作。这也是一个在数字之间共享集群的合理方式 的用户。最后,公平分享也适用于工作优先级—— 优先级被用作权重来确定总数的一部分 计算每个作业应该获得的时间。

    Fair Scheduler 源于 Facebook 需要在多个用户之间共享其数据仓库。 Facebook 开始使用 Hadoop 来管理其每天积累的大量内容和日志数据。最初,每天只有少数工作需要在数据上运行以构建报告。然而,随着 Facebook 内的其他团队开始使用 Hadoop,生产工作的数量增加了。此外,分析师开始使用数据仓库通过 Hive(Facebook 的类似 SQL 的 Hadoop 查询语言)进行临时查询,并且随着开发人员对数据集进行试验,提交了更多大型批处理作业。 Facebook 的数据团队考虑为生产作业构建一个单独的集群,但认为这将非常昂贵,因为必须复制数据并且两个集群的利用率都会很低。相反,Facebook 构建了 Fair Scheduler,它在多个作业之间平均分配资源,并且还支持生产作业的容量保证。 Fair Scheduler 基于三个概念:

    • 根据可配置属性将作业放置到命名的“池”中 例如用户名、Unix 组或专门将作业标记为 通过其 jobconf 在特定池中。
    • 每个池都可以有一个“保证容量”,通过 一个配置文件,它给出了最小数量的 map slot 和 reduce 分配给池的槽。当有待处理的作业时 池,它至少有这么多槽,但如果它没有作业, 插槽可供其他池使用。
    • 未达到池最小值的多余容量是 使用公平共享在作业之间分配。公平共享确保 随着时间的推移,每个作业都会收到大致相同数量的资源。 这意味着较短的工作将很快完成,而较长的工作 保证不会饿死。

    调度程序还包括许多易于管理的功能,包括在运行时重新加载配置文件以更改池设置而无需重新启动集群、限制每个用户和每个池运行的作业以及使用优先级权衡不同工作的份额。


    CapacityScheduler 旨在允许共享大型集群 同时给予每个组织最低容量保证。这 中心思想是 Hadoop Map-Reduce 中的可用资源 集群在多个组织之间进行分区,这些组织共同 根据计算需求为集群提供资金。还有一个额外的好处 一个组织可以访问任何未被使用的过剩产能 其他。这为组织提供了弹性 经济实惠的方式。

    Yahoo 的 Capacity Scheduler 提供了与 Fair Scheduler 类似的功能,但采用了不同的理念。在容量调度程序中,您定义了许多命名队列。每个队列都有可配置数量的 map 和 reduce 槽。调度程序在每个队列包含作业时为其分配容量,并在队列之间共享任何未使用的容量。但是,在每个队列中,都使用了具有优先级的 FIFO 调度,除了一个方面 - 您可以限制每个用户运行任务的百分比,以便用户平等地共享集群。换句话说,容量调度器尝试为每个用户和每个组织模拟一个单独的 FIFO/优先级集群,而不是在所有作业之间执行公平共享。容量调度器还支持在每个队列上配置等待时间,之后如果它低于其公平份额,则允许抢占其他队列的任务。

    因此,这将归结为您的需求和设置,以便决定您应该使用哪个调度程序。

    Apache hadoop 现在支持这两种类型的调度。更详细的信息可以在以下链接中找到:

    【讨论】:

    • Fairshare 调度早在 Facebook 创建之前就已经在 HPC 中使用了——至少从 1980 年代后期开始。我认为由于公平共享树的存在而产生了混淆(这个问题),它允许 HPC 中的公平共享系统提供 Hadoop 的容量调度程序所做的事情。
    • 我相信他指的是 Hadoop 项目上下文中的公平共享调度。当然,这个概念可能在马克·扎克伯格出生之前就已经存在了。
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2016-08-12
    • 2018-08-17
    相关资源
    最近更新 更多