当Hadoop Capacity调度程序只使用一个队列(默认值)时,hadoop如何调度该作业中的不同作业?是FIFO吗?它有不同的机制吗?
使用Fair调度程序时,该行为有什么不同吗?
答案 0 :(得分:0)
来自cloudera旧文章(Hadoop 1.x):
选择队列后,计划程序将在队列中选择一个作业。根据提交的时间和优先级(如果队列支持优先级)对作业进行排序。
按顺序考虑作业,a job is selected if its user is within the user-quota for the queue
,即用户尚未使用超出其限制的队列资源。如果作业有特殊的内存要求,Scheduler还会确保TaskTracker中有足够的可用内存来调整作业的任务。
选择作业后,计划程序将选择要运行的任务。选择任务的逻辑与早期版本保持不变。
来自CapacityScheduler上的Apache官方文档:
Resource-based Scheduling
- 支持资源密集型应用程序,在应用程序中,可以选择指定比默认值更高的资源要求,从而适应具有不同资源要求的应用程序。 Currently, memory is the the resource requirement supported
。
来自FairScheduler上的Apache官方文档:
公平调度是一种为应用程序分配资源的方法,使得所有应用程序平均可以随时间获得相等的资源份额。 Hadoop NextGen能够调度多种资源类型。默认情况下,公平调度程序仅基于内存来确定调度公平性决策。它可以配置为使用Ghodsi等人开发的Dominant Resource Fairness的概念同时调度内存和CPU。当有一个应用程序在运行时,该应用程序将使用整个群集
在每个队列中,调度策略用于在正在运行的应用程序之间共享资源。 The default is memory-based fair sharing, but FIFO and multi-resource with Dominant Resource Fairness can also be configured
。可以按层次结构排列队列以划分资源,并使用权重配置以按特定比例共享群集。