要创建MapReduce作业,您可以使用旧的org.apache.hadoop.mapred
包或更新的org.apache.hadoop.mapreduce
包用于Mappers和Reducers,Jobs ...第一个被标记为已弃用,但同时还原了。现在我想知道使用旧的mapred包或新的mapreduce包来创建作业以及为什么更好。或者它只取决于你是否需要像旧的mapred包中可用的MultipleTextOutputFormat这样的东西?
答案 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(已映射)
包中存在org.apache.hadoop.mapred
提供地图/减少作业配置。
新API(mapreduce)
包org.apache.hadoop.mapreduce中存在
作业配置由单独的类Called JobConf完成,该类是Configuration的扩展 类
根据Iterable