Hadoop上减速器的理想数量是多少



Hadoop wiki给出的计算理想减速器数量的方法是0.95或1.75*(nodes*mapred.tasktracker.tasks.max)

何时选择0.95,何时选择1.75?在决定这个乘数时考虑的因素是什么

假设集群中有100个reduce插槽可用。

在负载因子为0.95的情况下,所有95个reduce任务将同时开始,因为有足够的reduce时隙可用于所有任务。这意味着没有任务在队列中等待,直到其中一个任务完成。当减少的任务"很小",即完成得相对较快,或者它们或多或少都需要相同的时间时,我建议使用此选项。

另一方面,在负载因子为1.75的情况下,100个reduce任务将同时启动,与可用的reduce时隙一样多,其余75个任务将在队列中等待,直到reduce插槽变为可用。这提供了更好的负载平衡,因为如果某些任务比其他任务"重",即需要更多的时间,那么它们将不会成为作业的瓶颈,因为其他任务减少了插槽,而不是完成任务并等待,现在将执行队列中的任务。这也减轻了每个reduce任务的负载,因为映射输出的数据被分配到更多的任务。

如果我可以表达我的观点,我不确定这些因素是否总是理想的。通常,我使用的系数大于1.75(有时甚至是4或5),因为我在处理大数据,我的数据不适合每台机器,除非我将此系数设置得更高,负载平衡也更好。

最新更新