映射缩减和哈希分区



在学习MapReduce时,我遇到了这个问题:

一个给定的Mapreduce程序让Map阶段生成100个键值对,其中10个唯一键。

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

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

答案是B,C,D。

由于唯一键的编号是 10。我们必须至少有 10 个减少任务。并且至少有一个归约任务具有空键。

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

映射输出中的唯一键仅分配给一个归约任务。如果有 10 个唯一键,并且有 11、50 或 101 个归约任务,那么必然会有一些没有键的归简任务。

由于有 10 个唯一键,我们需要 10 个化简器,并且由于我们需要 1 个未分配键的化简器,因此总共有 11 个化简器。

如果化简器数大于或等于 11,则作业将无异常地运行。因此,任何大于或等于 11 的数字都是答案。

在这种情况下,

哈希分区程序仅意味着减少任务将由唯一键合并。假设一个reduce任务只在一台服务器上完成,因此10个任务中的每一个都是原子任务。

模运算符(或任何合理的分区程序)将确保 3 个服务器/化简器中的每一个在 10 个任务的情况下都处于活动状态。

对于其他选项,如果"化简器"

多于任务,如果我们相信分区函数,则所有任务都将分配给一个"化简器"(只有一个剩余)。这是荒谬的,或者至少在没有额外上下文的情况下令人困惑。显然,仅当任务数超过化简器/服务器数时才需要分区。

为了将一个化简器输出作为空文件,即没有分配给化简器的键,我们至少需要 11 个化简器,因为哈希分区器基于哈希函数进行分发。在此处接收数据的合格化简器是 part-r-00000 到 part-r-00009。

化简器编号 = 键哈希码 % n ( 化简器数量)

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

相关内容

  • 没有找到相关文章

最新更新