【问题标题】:Is it better to use the mapred or the mapreduce package to create a Hadoop Job?使用 mapred 或 mapreduce 包创建 Hadoop 作业哪个更好?
【发布时间】:2011-11-27 17:52:40
【问题描述】:

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

【问题讨论】:

  • but this got reverted meanwhile你确定吗?
  • 例如r0.21.0 中 org.apache.hadoop.mapred.lib 包中的接口映射器未标记为已弃用,而在 r0.20.2 中标记为已弃用。

标签: hadoop mapreduce


【解决方案1】:

在功能方面,旧的 (o.a.h.mapred) 和新的 (o.a.h.mapreduce) API 之间没有太大区别。唯一显着的区别是记录被推送到旧 API 中的映射器/归约器。而新的 API 同时支持拉/推机制。您可以获取更多关于拉取机制的信息here

此外,从 0.21 开始,旧 API 一直是 un-deprecated。您可以找到有关新 API here 的更多信息。

正如您提到的,一些类(如 MultipleTextOutputFormat)尚未迁移到新 API,由于这个和上述原因,最好坚持使用旧 API(尽管翻译通常很简单)。

【讨论】:

  • javadocs 没有提到这些有什么原因吗?
  • Hadoop - The Definitive Guide 拥有新 API 中的大部分代码。
  • 附带说明 - MRUnit 使用新的 API,.mapreduce。因此,如果您在代码中使用 .mapred,它会引发错误。你不会快乐的。
  • 作为对当前 Hadoop 版本(2.1.0 beta)的一个小更新,旧 API 被宣布为稳定并且没有被弃用:hadoop.apache.org/docs/current/api/index.html?org/apache/hadoop/…也许我们可以把它变成一个社区维基@ PraveenSripati
  • 由于缺少 @deprecated 注释,我已经使用旧 API 2 年了,甚至不知道存在新 API(我开始时已经 2 岁了:我应该一直在用)。我昨天才发现,因为我想使用的 OutputFormat 是为新 API 编写的,现在我必须更改所有内容。我已经习惯了编译器告诉我某些东西是否已被弃用,而不是社区民间传说。
【解决方案2】:

新旧 API 都很好。新的 API 更简洁。尽可能使用新 API,并在需要新 API 中不存在的特定类的地方使用旧 API(例如 MultipleTextOutputFormat

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

【讨论】:

    【解决方案3】:

    旧 API(mapred)

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

    2. 提供 map/reduce 作业配置。

    3. 根据迭代器减少给定键的值
    4. Summary

    新 API(mapreduce)

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

    2. 作业配置由单独的类完成,称为 JobConf,它是 Configuration 的扩展

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

    4. Package Summary

    【讨论】:

    • org.apache.hadoop.mapred 是旧的 API,而 org.apache.hadoop.mapreduce 是新的。你可能想改变你的答案
    • 另外,JobConf 是 mapred API 的一部分,而不是 mapreduce API
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多