我们能在同一个hadoop集群中同时使用公平调度程序和容量调度程序吗

qyuhtwio  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(399)

我们可以在同一个hadoop集群中同时使用fair调度器和capacity调度器吗。哪个调度器是好的和有效的。有人能帮我吗?

ht4b089n

ht4b089n1#

我认为两者不能同时使用。这也没有道理。为什么要在同一个集群中使用这两种类型的调度?这两种调度算法都是由于特定的用例而出现的。
公平调度是一种将资源分配给作业的方法,使所有作业在一段时间内平均获得相等的资源份额。当有一个作业正在运行时,该作业将使用整个集群。提交其他作业时,将释放的任务槽分配给新作业,以便每个作业获得大致相同的cpu时间。与默认的hadoop调度器不同,hadoop调度器形成了一个作业队列,它允许短作业在合理的时间内完成,而不会耗尽长作业。在多个用户之间共享集群也是一种合理的方式。最后,公平共享还可以与作业优先级一起工作-优先级用作权重,以确定每个作业应获得的总计算时间的分数。
fair scheduler的出现源于facebook需要在多个用户之间共享其数据仓库。facebook开始使用hadoop来管理它每天积累的大量内容和日志数据。最初,每天只需要在数据上运行一些作业来构建报告。然而,随着facebook内部的其他小组开始使用hadoop,生产工作的数量也在增加。此外,分析师开始通过hive(facebook的类似sql的hadoop查询语言)使用数据仓库进行即席查询,随着开发人员对数据集的试验,提交了更多的大批量作业。facebook的数据团队考虑为生产作业构建一个单独的集群,但考虑到这将非常昂贵,因为数据必须被复制,而且两个集群上的利用率都很低。相反,facebook构建了fair scheduler,它在多个作业之间平均分配资源,还支持生产作业的容量保证。fair scheduler基于三个概念:
作业根据可配置属性(如用户名、unix组)放置到命名的“池”中,或者通过其jobconf专门将作业标记为位于特定池中。
每个池都可以有一个通过配置文件指定的“保证容量”,该文件提供了分配给池的Map插槽和减少插槽的最小数量。当池中有挂起的作业时,它至少会获得这么多的插槽,但是如果它没有作业,那么这些插槽可以被其他池使用。
多余的容量不会达到池的最小值,而是使用公平共享在作业之间进行分配。公平分享确保了随着时间的推移,每个工作获得的资源量大致相同。这意味着较短的工作会很快完成,而较长的工作则保证不会挨饿。
调度器还包括许多易于管理的功能,包括在运行时重新加载配置文件以更改池设置而无需重新启动集群的能力、对每个用户和每个池运行作业的限制,以及使用优先级来权衡不同作业的份额。
capacityscheduler的设计允许共享一个大型集群,同时为每个组织提供最低容量保证。核心思想是hadoop map reduce集群中的可用资源在多个组织之间进行划分,这些组织根据计算需求共同为集群提供资金。还有一个额外的好处是,一个组织可以访问任何多余的容量,而不被其他人使用。这为各组织提供了成本效益高的弹性。
yahoo的capacity scheduler提供了与fair scheduler类似的功能,但采用了不同的理念。在“容量调度器”中,可以定义许多命名队列。每个队列都有一个可配置的map和reduce插槽数。调度器在每个队列包含作业时为其提供容量,并在队列之间共享任何未使用的容量。但是,在每个队列中,都使用具有优先级的fifo调度,除了一个方面——您可以限制每个用户运行任务的百分比,以便用户平等地共享集群。换句话说,容量调度器尝试为每个用户和每个组织模拟一个单独的fifo/优先级集群,而不是在所有作业之间执行公平共享。容量调度器还支持在每个队列上配置一个等待时间,在此时间之后,如果其他队列的任务低于其公平份额,则允许它抢占其他队列的任务。
因此,它可以归结为什么是您的需要和设置,以便决定您应该使用哪个调度器。
apachehadoop现在支持这两种类型的调度。有关更多详细信息,请访问以下链接:
容量调度器
公平调度

相关问题