7

嗨,我是 Hadoop 新手,它是文件系统。我看到两个不同的 WordCount 示例使用JobConfConfiguration。他们有什么区别。

我研究了它JobConf是旧包的一部分org.apache.hadoop.mapred(在 0.20.x 中已弃用),但配置是新包的一部分org.apache.hadoop.mapreduce。但现在在 v1.0.4 中它已被弃用。

目前我们有两种在java中运行map reduce作业的方法,一种是使用(扩展)org.apache.hadoop.mapreduce包中的类,另一种是实现org.apache.hadoop.mapred包中的类。

我想知道:

  1. mapredmapreduce包结构有什么区别,为什么mapred不推荐使用?

  2. 哪种方法更适合 v1.0.4 使用,为什么?JobConf还是Configuration

  3. 哪个更适合 v1.0.4?mapred还是mapreduce

4

1 回答 1

6

如果您查看发布页面,您会看到 1.0.4 对应于大约 0.20.20x

为了提供一些背景信息,以下是邮件列表中正在讨论的内容:

The "old" MapReduce API in org.apache.hadoop.mapred was deprecated in the 0.20 
release series when the "new" (Context Objects) MapReduce API was added in
org.apache.hadoop.mapreduce. Unfortunately, the new API was not complete in 0.20
and most users stayed with the old API. This has led to the confusing situation 
where the old API is generally recommended, even though it is deprecated.

如您所见,这主要是一个复古兼容性问题。

所以底线是,如果您现在使用 1.0.4 启动您的应用程序,您应该使用mapreduce而不是mapred因为它现在是首选方式,但如果您有遗留应用程序,您仍然可以使用旧的方式。mapred这意味着您应该使用Configuration.

至于 和 之间的区别mapredmapreduce正如上面的摘录中所解释的,主要来自于Context对象的引入,但是还有很多其他的变化和新的类是旧的mapred

于 2013-02-19T20:01:07.670 回答