Mapper和Reducer是Hadoop版本2中的接口吗?

时间:2016-05-04 17:52:09

标签: java hadoop mapreduce hadoop2

只是一个基本问题。我知道Mapper和Reducer是Hadoop版本2中的接口。但是在编码时我仍然看到使用 扩展映射器或扩展reducer而不是implements <的示例/strong>。是否存在这样的原因,或者由于向后兼容性而在旧版本中实现它们?这是我一直在学习的链接 https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#MapReduce_-_User_Interfaces

3 个答案:

答案 0 :(得分:1)

不确定您在该页面上的哪个位置读取Mapper和Reducer是MapReduce2的接口,但该页面上的源代码显然使用了类。关键字为extends

import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
...
public static class TokenizerMapper extends Mapper
...
public static class IntSumReducer extends Reducer

应该提到org.apache.hadoop.mapred.Mapperorg.apache.hadoop.mapred.Reducer 接口,但这些接口应该用于MapReduce1。

我认为将Mapper和Reducer重写为类的目的是简化类创建而不使用extends MapReduceBase implements这样

class MyReducer<K extends WritableComparable, V extends Writable> 
     extends MapReduceBase implements Reducer<K, V, K, V> 

答案 1 :(得分:0)

我仔细研究一下API后就发现了这一点。 的 org.apache.hadoop.mapreduce 类Reducer 适用于Hadoop2,其中Mapper和Reducer是类, org.apache.hadoop.mapred接口Reducer 在Hadoop 1中,它们是在Hadoop 2中编译的接口。这只是旧API和支持向后兼容性的新API之间的区别

答案 2 :(得分:0)

是-Mapper和Reducer是HADOOP-1x中的类,并且在后来的HADOOP -2x版本中已经增强到INTERFACE

示例-CODE:

在先前版本的HADOOP

公共静态类New_Map扩展MapReduceBase实现Mapper {

在HADOOP-2x中

公共静态类New_Map扩展了Mapper {