是否可以在hadoop中禁用排序?

时间:2012-01-31 05:34:24

标签: hadoop mapreduce

我的工作不需要排序,只需要按键聚合信息。所以我认为如果可以禁用所有信息的排序,以提高性能。


注意:我无法将reducers设置为零,因为我需要在多个映射器之间聚合数据。我只对一个减速机的排序结果不感兴趣。

3 个答案:

答案 0 :(得分:0)

对地图输出进行排序的主要目的之一是,当元组到达reducer时,reducer必须调用reducer任务,使用有序映射输出列表,它可以通过顺序扫描生成列表(当它看到时)如果地图输出没有排序,那么它必须扫描整个列表以形成具有相同键的列表。

答案 1 :(得分:0)

不,MapReduce中的排序主要是针对内部用途执行的,而不是针对要排序的最终结果执行的。
在为唯一键创建值列表时,排序输入确保了良好的性能,其作为值>提供。调用reduce()函数时的参数。

答案 2 :(得分:0)

如果您指定零精简器(setNumReduceTasks(0)),则根本不会执行Hadoop MapReduce中的混排和排序。 和 可以通过job.setNumreduceTasks(0)在驱动程序类中将reducer的数量设置为0。这表明没有reducer阶段,只有map阶段。这被称为仅map作业。