嗨,我是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
? JobConf
或Configuration
吗? mapred
或mapreduce
吗? 最佳答案
如果查看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
中不可用。关于java - JobConf v/s Hadoop 1.0.4的配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14959834/