【问题标题】:Map reduce and hash partitioningMap reduce 和 hash 分区
【发布时间】:2015-04-19 14:59:35
【问题描述】:

在学习 MapReduce 的过程中,遇到了this question

给定的 Mapreduce 程序在 Map 阶段生成 100 个具有 10 个唯一键的键值对。

当使用哈希分区器时,如果至少一个 Reduce 任务肯定不会被分配任何键,那么这个程序可以有多少个 Reduce 任务(选择所有正确的答案)?

  • [ ] A. 3
  • [ ] B. 11
  • [ ] C. 50
  • [ ] D. 101

答案是 B、C、D。

由于唯一键的数量是 10。我们必须至少有 10 个 reduce 任务。并且至少有一个 reduce 任务有 null 键。

我无法理解这些答案是如何得出的。请帮帮我。

【问题讨论】:

  • 我查找了问题的来源并将其与解释一起编辑到您的问题中。您需要解释哪一部分的帮助?

标签: mapreduce hadoop-partitioning


【解决方案1】:

map 输出中的唯一键只分配给一个 reduce 任务。如果有 10 个唯一键并且有 11、50 或 101 个 reduce 任务,那么必然会有一些没有键的 reduce 任务。

【讨论】:

    【解决方案2】:

    由于有 10 个唯一键,我们需要 10 个 reducer,并且由于我们需要 1 个没有分配任何键的 reducer,所以总共需要 11 个 reducer。

    如果 reducer 的数量大于或等于 11,则作业将无异常运行。所以任何大于或等于 11 的数字都是答案。

    【讨论】:

    • 一个reducer不能处理多个key val对吗?
    【解决方案3】:

    为了让一个reducer输出为空文件,即没有给reducer分配key,我们至少需要11个reducer,因为hashpartitioner是基于散列函数分布的。这里接收数据的合格reducer是part-r-00000到part-r-00009。

    reducer no = key hashcode % n (reducer 数量)

    所以可能的余数是 0 到 n-1。这里我们有 10 个唯一键,即 10 个不同的余数。即使减速器的数量少于唯一的键数,我们也会有空的减速器文件。在最坏的情况下,如果 reducer 的数量超过唯一键,我们也会让一个 reducer 文件为空。

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2014-11-20
      • 2011-08-06
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多