使用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)
-
存在于包org.apache.hadoop.mapred中
-
提供地图/缩小作业configuration。
- 根据Iterator减less给定键的值
- 程序包摘要
新的API(mapreduce)
-
存在于包org.apache.hadoop.mapreduce中
-
作业configuration由独立的类完成,称为JobConf,它是Configuration的扩展
类 -
根据Iterable减less给定键的值
-
程序包摘要