Hadoop 1.0.4中的JobConf与Configuration有什么区别?

7

你好,我是新手Hadoop和它的文件系统。我看到了两个不同的WordCount示例,一个使用JobConf,另一个使用Configuration。它们之间有什么区别?

我研究了一下,JobConf是旧包org.apache.hadoop.mapred的一部分(在0.20.x中已弃用),但Configuration是新包org.apache.hadoop.mapreduce的一部分。但现在在v1.0.4中已经取消了弃用标记。

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

我想知道:

  1. mapredmapreduce包结构之间的区别是什么,为什么mapred取消了弃用标记?

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

  3. v1.0.4中哪个更好?mapred还是mapreduce


可能是重复的问题:使用mapred还是mapreduce包创建Hadoop作业更好? - Thomas Jungblut
我已经阅读了那个答案。那种方法适用于v0.20和v0.21/22版本。但是这里我正在询问v1.0.4版本。请不要将其与之联系起来。在完全理解之前,请不要做出任何决定。 - Abhendra Singh
1.0不过是0.20和0.22之间的版本。可以将其视为经过打磨的20.x版本。在添加新问题之前,应先搜索现有答案,更不用说版本编号的研究了。 - Thomas Jungblut
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中不可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接