在Mapreduce中,Reduce任务与Reducer有何不同?
reduce task和reducer之间有什么关联?
Reducer是否执行reduce任务?
非常感谢
答案 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
类的功能。