在MapReduce中,reduce任务与reducer有何不同

时间:2015-11-03 10:44:40

标签: hadoop mapreduce

在Mapreduce中,Reduce任务与Reducer有何不同?

reduce task和reducer之间有什么关联?

Reducer是否执行reduce任务?

非常感谢

2 个答案:

答案 0 :(得分:1)

Reduce task只是Reducer.

的一个实例

reduce任务的数量是可配置的。

可以通过在作业配置对象

中设置属性mapred.reduce.tasks来指定它

org.apache.hadoop.mapreduce.Job#setNumReduceTasks(int reducerCount);方法可以使用。

答案 1 :(得分:1)

来自Apache文档,

Reducer 会将一组中间值减少到一组较小的值。

Reducer 有3个主要阶段:

<强>随机

Reducer输入Mapper的分组输出。在该阶段,每个Reducer的框架都通过HTTP获取所有Mapper输出的相关分区。

<强>排序

框架在此阶段按键分配Reducer输入(因为不同的Mapper可能输出相同的键)。

<强>减少

在此阶段,为分组输入中的每一对调用reduce(Object, Iterator, OutputCollector, Reporter)方法。

Reduce任务的输出通常通过OutputCollector.collect(Object, Object)写入文件系统。

请注意,除了Reducer之外, Combiner 还会调用 reduce 功能,因为它正在实施 Reducer 界面。

Reducer 是一个类,其中包含reduce函数,如下所示

    protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
                        ) throws IOException, InterruptedException {
运行 Reduce task reduce类的功能。