Hadoop上理想的还原器数量是多少?
正如Hadoop wiki所给出的,计算理想的减缩器数量是0.95或1.75*(nodes*mapred.tasktracker.tasks.max)Hadoop上理想的还原器数量是多少?,hadoop,mapreduce,reducers,Hadoop,Mapreduce,Reducers,正如Hadoop wiki所给出的,计算理想的减缩器数量是0.95或1.75*(nodes*mapred.tasktracker.tasks.max) 但是何时选择0.95,何时选择1.75?在决定这个乘数时考虑的因素是什么?假设集群中有100个reduce插槽可用 负载系数为0.95时,所有95个reduce任务将同时启动,因为有足够的reduce插槽可用于所有任务。这意味着在剩余任务之一完成之前,队列中不会有任务等待。当reduce任务是“小”任务时,即完成相对较快,或者它们或多或少都需要相
但是何时选择0.95,何时选择1.75?在决定这个乘数时考虑的因素是什么?假设集群中有100个reduce插槽可用 负载系数为0.95时,所有95个reduce任务将同时启动,因为有足够的reduce插槽可用于所有任务。这意味着在剩余任务之一完成之前,队列中不会有任务等待。当reduce任务是“小”任务时,即完成相对较快,或者它们或多或少都需要相同的时间时,我建议使用此选项 另一方面,在负载系数为1.75的情况下,100个reduce任务将同时启动,数量与reduce插槽可用的数量相同,其余75个任务将在队列中等待,直到reduce插槽可用为止。这提供了更好的负载平衡,因为如果某些任务比其他任务“更重”,即需要更多的时间,那么它们将不会成为作业的瓶颈,因为其他任务将减少插槽,而不是完成任务并等待,现在将执行队列中的任务。这也减轻了每个reduce任务的负载,因为map输出的数据会扩展到更多任务 如果我可以表达我的观点,我不确定这些因素是否总是理想的。通常,我使用的系数大于1.75(有时甚至是4或5),因为我处理的是大数据,我的数据不适合每台机器,除非我将该系数设置得更高,负载平衡也更好