由Hadoop wiki给出的计算理想减速器数量为0.95或1.75 *(节点* mapred.tasktracker.tasks.maximum)
但何时选择0.95和1.75?决定此乘数时考虑的因素是什么??
答案 0 :(得分:5)
假设您的群集中有100个可用的缩减插槽。
当负载因子为0.95时,所有95个减少任务将同时启动,因为有足够的减少时隙可用于所有任务。这意味着没有任务将在队列中等待,直到其中一个完成。当减少任务“小”时,我会推荐这个选项,即完成相对较快,或者它们都需要相同的时间,或多或少。
另一方面,当负载因子为1.75时,100个reduce任务将同时启动,与可用的reduce槽一样多,75个rest将在队列中等待,直到reduce槽可用。这提供了更好的负载平衡,因为如果某些任务比其他任务“更重”,即需要更多时间,那么它们将不会成为工作的瓶颈,因为其他减少插槽,而不是完成任务和等待,现在将正在执行队列中的任务。这也减轻了每个reduce任务的负担,因为map输出的数据传播到更多任务。
如果我可以表达我的意见,我不确定这些因素是否总是理想的。通常,我使用大于1.75(有时甚至是4或5)的因子,因为我正在处理大数据,并且我的数据不适合每台机器,除非我将此因子设置得更高并且负载平衡也更好。