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

Mapper and Reducer are interfaces in Hadoop version 2?

只是基本 question.I 知道 Mapper 和 Reducer 是 Hadoop 版本 2 中的接口。但是在编码时我仍然看到使用 extends mapper 或 extends reducer 的示例而不是 implements。这是有原因的,还是由于向后兼容性而在旧版本中实现?这是我一直在学习的 link https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#MapReduce_-_User_Interfaces

不确定您在该页面上的哪个位置读到 Mapper 和 Reducer 是 MapReduce2 的接口,但该页面上的源代码清楚地使用了 classes。关键字是 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 重写为 classes 的目的是为了简化 class 创建,而不像这样 extends MapReduceBase implements

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

我在仔细查看 API 时发现了这一点。 org.apache.hadoop.mapreduce Class Reducer 适用于 Hadoop2,其中 Mapper 和 Reducer 是 Classes 并且 org.apache.hadoop.mapred Interface Reducer 在 Hadoop 1 中它们也是在 Hadoop 2 中编译的接口。只是老款API和支持向后兼容的新款的区别

是 -Mapper 和 Reducer 在 HADOOP-1x 中 classes 并且在后来的 HADOOP -2x 版本中已增强为 INTERFACE

示例代码:

在之前的HADOOP版本中

public static class New_Map extends MapReduceBase implements Mapper{

在 HADOOP-2x

public 静态 class New_Map 扩展映射器{