2011-06-03 64 views
0

我试图运行Fair Scheduler,但它并未将Map任务分配给仅有一个作业正在运行的某些节点。我的理解是,公平计划将使用conf插槽限制,除非存在多个作业,此时计算公平性计算。我也尝试将所有队列设置为fair-scheduler.xml中的FIFO,但我得到了相同的结果。Hadoop Fair Scheduler未将任务分配给某些节点

我已经在所有mapred-site.xml文件中设置了调度程序mapreduce.jobtracker.taskscheduler参数(尽管我相信只有JobTracker需要它),并且一些节点在接收和运行Map任务时没有问题。然而,其他节点要么从未获得任何Map任务,要么获得一轮Map任务(即所有的槽都被填充一次),然后再也没有获得任何。

我试过这个作为开发我自己的LoadManager的先决条件,所以我继续将调试LoadManager放在一起。从日志消息中,我可以看到问题节点不断请求Map任务,并且他们的插槽是空的。但是,他们从未被分配任何。

所有节点都与默认调度程序完美配合。当我启用Fair Scheduler时,我刚开始遇到这个问题。

任何想法?有人有这个工作,并采取了我已经错过了一个步骤?

编辑:值得注意的是公平调度程序的Web用户界面页面指出正确的公平份额计数,但运行列总是少。我使用默认的每个用户池,一次只有1个用户和1个作业。

回答

3

原因是未记录的mapred.fairscheduler.locality.delay参数。有问题的节点位于不同的机架上,HDFS被禁用,这些节点上的所有任务都是非机架本地的。因此,由于公平调度程序的延迟调度算法(描述为here),导致了大量延迟。

+0

呃,404上的链接。 – dfrankow 2013-02-15 22:52:31

+0

@dfrankow:已修复,通过google找到它。 – BigChief 2013-02-15 23:45:53

相关问题