您好我是Hadoop的新手,而且是FileSystem。我使用JobConf
和Configuration
看到了两个不同的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
包中实现类。
我想知道:
mapred
和mapreduce
包结构之间有什么区别以及为什么mapred
未被弃用?
哪种方法更适合v1.0.4使用?为什么? JobConf
或Configuration
?
哪个更适合v1.0.4? mapred
或mapreduce
?
答案 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
。
至于mapred
和mapreduce
之间的差异,正如上面的摘录中所解释的那样,它主要来自Context
对象的引入,但还有一些其他的变化和新的旧mapred
中没有的类。