前面已经完成了对org.apache.hadoop.mapreduce的分析,这个包提供了Hadoop MapReduce部分的应用API,用于用户实现本身的MapReduce应用。但这些接口是给将来的MapReduce应用的,目前MapReduce框架仍是使用老系统(参考补丁HADOOP-1230)。下面咱们来分析org.apache.hadoop.mapred,首先仍是从mapred的MapReduce框架开始分析,下面的类图(灰色部分为标记为@Deprecated的类/接口):web
咱们把包mapreduce的类图附在下面,对比一下,咱们就会发现,org.apache.hadoop.mapred中的MapReduce API相对来讲很简单,主要是少了和Context相关的类,那么,好多在mapreduce中经过context来完成的工做,就须要经过参数来传递,如Map中的输出,老版本是:
output.collect(key,result); // output’s type is:OutputCollector
新版本是:
apache
context.write(key, result); // output’s type is: Context微信
它们分别使用OutputCollector和Mapper.Context来输出map的结果,显然,原有OutputCollector的新API中就再也不须要。整体来讲,老版本的API比较简单,MapReduce过程当中关键的对象都有,但可扩展性不是很强。同时,老版中提供的辅助类也不少,咱们前面分析的FileOutputFormat,也有对应的实现,咱们就再也不讨论了。app
更多精彩内容请关注:http://bbs.superwu.cn 框架
关注超人学院微信二维码:oop