正如 Hadoop wiki 给出的,计算理想的减速器数量是 0.95 或 1.75 * (节点 * mapred.tasktracker.tasks.maximum)
but 什么时候选择0.95,什么时候选择1.75?决定这个乘数时考虑的因素是什么?
假设您的集群中有 100 个可用的reduce 槽。
当负载因子为 0.95 时,所有 95 个reduce 任务将同时启动,因为有足够的reduce 槽可用于所有任务。这意味着队列中不会有任何任务等待,直到其余任务之一完成为止。当减少任务“小”时,即完成相对较快,或者它们都需要或多或少相同的时间时,我会推荐此选项。
另一方面,当负载因子为 1.75 时,100 个reduce 任务将同时启动,数量与可用的reduce 槽数量相同,其余75 个将在队列中等待,直到有可用的reduce 槽。这提供了更好的负载平衡,因为如果某些任务比其他任务“更重”,即需要更多时间,那么它们将不会成为作业的瓶颈,因为其他减少槽现在不会完成其任务并等待,而是会成为作业的瓶颈。正在执行队列中的任务。这也减轻了每个reduce任务的负载,因为map输出的数据被分散到更多的任务中。
如果我可以表达我的意见,我不确定这些因素是否总是理想的。通常,我使用大于 1.75 的系数(有时甚至是 4 或 5),因为我正在处理大数据,并且我的数据并不适合每台机器,除非我将这个系数设置得更高并且负载平衡也更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)