JobConf v / s配置Hadoop 1.0.4

时间:2013-02-19 14:26:05

标签: java hadoop mapreduce

您好我是Hadoop的新手,而且是FileSystem。我使用JobConfConfiguration看到了两个不同的WordCount示例。它们有什么不同。

我研究过JobConf是旧包org.apache.hadoop.mapred的一部分(在0.20.x中已弃用),但Configuration是新包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使用?为什么? JobConfConfiguration

  3. 哪个更适合v1.0.4? mapredmapreduce

1 个答案:

答案 0 :(得分:6)

如果你查看the releases page,你可以看到1.0.4对应于0.20.20x左右的东西

为了给出一些背景信息,以下是正在讨论的内容on the mailing list

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中没有的类。