当我阅读这张幻灯片中的延迟公平调度时,我对 Hadoop 中的“作业调度”和“任务调度”这两个术语有点困惑。
如果我的以下假设有误,请纠正我:
默认调度器、容量调度器和公平调度器仅在用户调度多个作业时在作业级别有效。如果系统中只有一个工作,它们就不会发挥任何作用。这些调度算法构成了“作业调度”的基础
每个作业可以有多个 map 和 reduce 任务,它们是如何分配给每台机器的?如何为单个作业安排任务?“任务调度”的依据是什么?
在公平调度程序的情况下,当有一个作业正在运行时,该作业会使用整个集群。当提交其他作业时,将释放的任务槽分配给新作业,以便每个作业获得大致相同的 CPU 时间。
与形成作业队列的默认 Hadoop调度程序不同,这可以让短作业在合理的时间内完成,而不会饿死长作业。这也是在多个用户之间共享集群的简单方法。公平共享也可以与作业优先级一起使用 - 优先级用作权重来确定每个作业获得的总计算时间的比例。
CapacityScheduler旨在允许共享大型集群,同时为每个组织提供最低容量保证。中心思想是将 Hadoop Map-Reduce 集群中的可用资源分配给多个组织,这些组织根据计算需求共同为集群提供资金。还有一个额外的好处是,组织可以访问任何未被其他人使用的多余容量。这以具有成本效益的方式为组织提供了弹性。