使用mapred或mapreduce包创建Hadoop作业更好吗?

时间:2011-09-29 13:57:55

标签: hadoop mapreduce

要创建MapReduce作业,您可以使用旧的org.apache.hadoop.mapred包或更新的org.apache.hadoop.mapreduce包用于Mappers和Reducers,Jobs ...第一个被标记为已弃用,但同时还原了。现在我想知道使用旧的mapred包或新的mapreduce包来创建作业以及为什么更好。或者它只取决于你是否需要像旧的mapred包中可用的MultipleTextOutputFormat这样的东西?

3 个答案:

答案 0 :(得分:42)

功能明智,旧(o.a.h.mapred)和新(o.a.h.mapreduce)API之间没有太大区别。唯一显着的区别是记录被推送到旧API中的mapper / reducer。虽然新的API支持拉/推机制。您可以获得有关拉动机制here的更多信息。

此外,旧的API自{0.2}以来一直是un-deprecated。您可以找到有关新API here的更多信息。

正如您所提到的,某些类(如MultipleTextOutputFormat)尚未迁移到新API,由于这个以及上述原因,最好坚持使用旧API(尽管翻译通常非常简单)。 / p>

答案 1 :(得分:14)

旧API和新API都很好。新API虽然更干净。尽可能使用新API,并在需要新API中不存在的特定类的任何地方使用旧API(如MultipleTextOutputFormat

但请注意不要在同一Mapreduce作业中混合使用旧API和新API。这导致了奇怪的问题。

答案 2 :(得分:2)

旧API(已映射)

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

  2. 提供地图/减少作业配置。

  3. 根据Iterator
  4. 减少给定键的值
  5. 套餐Summary
  6. 新API(mapreduce)

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

    2. 作业配置由单独的类Called JobConf完成,该类是Configuration的扩展      类

    3. 根据Iterable

    4. 减少给定键的值
    5. Package Summary