1

我有一个关于 MapReduce FIFO 调度程序的问题。我了解作业在到达队列时执行(只要它们具有相同的优先级)。我的理解是下一项工作将等到当前工作完成。但是,如果当前作业没有完全消耗容量并且下一个作业可以使用剩余容量运行怎么办?在这种情况下,下一个作业将立即执行还是仍然等待当前作业完成?

如果第二个任务必须等到第一个任务完成,一个相关的问题是,当第一个任务的地图任务完成时,第二个任务的地图任务是否可以运行。

4

1 回答 1

1

首先,集群中的每个节点都有固定数量的槽,平均分配给映射任务和减少任务。在 FIFO 调度程序中,当发生偏移时效率不是很高。例如,如果之前的作业有一个 map 任务或 reduce 任务需要“永远”完成,那么整个系统可能会停止。幸运的是,这不会发生,因为 MapReduce 采用了推测执行。一旦检测到落后者,他们的克隆将在其他节点启动。

你的第一个问题:我认为答案是肯定的。剩余的容量当然会被下一个作业使用。

第二个问题:当没有剩余容量可用时,下一个作业必须等待。当前一个作业完成其地图任务时,这意味着地图任务的插槽被释放。所以下一个工作可以开始它的映射阶段。

于 2013-05-29T08:54:18.137 回答