嗨,我是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包中的类。

我想知道:

  • mapredmapreduce包结构之间有什么区别?为什么不建议弃用mapred
  • 哪种方法更适合v1.0.4使用,为什么? JobConfConfiguration吗?
  • 哪个对v1.0.4更好? mapredmapreduce吗?
  • 最佳答案

    如果查看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中不可用。

    关于java - JobConf v/s Hadoop 1.0.4的配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14959834/

    10-12 05:19