Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop上理想的还原器数量是多少?_Hadoop_Mapreduce_Reducers - Fatal编程技术网

Hadoop上理想的还原器数量是多少?

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任务是“小”任务时,即完成相对较快,或者它们或多或少都需要相

正如Hadoop wiki所给出的,计算理想的减缩器数量是0.95或1.75*(nodes*mapred.tasktracker.tasks.max)


但是何时选择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),因为我处理的是大数据,我的数据不适合每台机器,除非我将该系数设置得更高,负载平衡也更好