使用mapred或mapreduce包来创buildHadoop作业会更好吗?

要创buildMapReduce作业,您可以使用旧的org.apache.hadoop.mapred包或较新的org.apache.hadoop.mapreduce包来映射器和减速器,作业…第一个已被标记为已弃用但已被还原与此同时。 现在我想知道使用旧的mapred软件包还是新的mapreduce软件包来创build一个工作以及为什么更好。 还是只是取决于你是否需要像旧的mapred软件包中可用的MultipleTextOutputFormat这样的东西?

function明智的是旧的( oahmapred )和新的( oahmapreduce )API没有太大的区别。 唯一显着的区别是logging被推送到旧API中的映射器/缩减器。 而新的API支持拉/推机制。 你可以在这里获得更多关于拉机制的信息 。

另外,旧的API自0.21以来一直未被弃用 。 你可以在这里find更多关于新API的信息 。

正如你所提到的一些类(如MultipleTextOutputFormat)没有被迁移到新的API,由于这个和上述原因,最好是坚持旧的API(虽然翻译通常很简单)。

旧的和新的API都很好。 新的API虽然清洁。 尽可能使用新的API,并在需要特定类的地方使用旧的API(如MultipleTextOutputFormat

但要小心,不要在同一个Mapreduce作业中混合使用新旧API。 这导致了奇怪的问题。

旧API(mapred)

  1. 存在于包org.apache.hadoop.mapred中

  2. 提供地图/缩小作业configuration。

  3. 根据Iterator减less给定键的值
  4. 程序包摘要

新的API(mapreduce)

  1. 存在于包org.apache.hadoop.mapreduce中

  2. 作业configuration由独立的类完成,称为JobConf,它是Configuration的扩展

  3. 根据Iterable减less给定键的值

  4. 程序包摘要