在map reduce中,为什么要使输入分割大小小于块大小

时间:2017-10-31 07:33:45

标签: dictionary input split size reduce

我是map的新手,并且已经完成了很多阅读,但无法理解为什么输入分割大小需要小于块大小。关于这个主题的大部分材料似乎都是针对如何解决而不是为什么。

因此,如果您的块大小为64MB,文件为512MB,这将创建8个块,并且假设您在具有16个可用于MR的核心的群集上拥有此块。然后我可以想象使用所有可用内核并通过使用32MB的分割大小并行生成16个映射任务而不是使用默认的分割大小=块大小来生成它可能是有意义的,它将并行生成8个映射任务。这是使用较小分割尺寸的原因吗?如果是这样,那么实际的分裂是如何发生的?框架是否会将块缩小一半并将两半并行地提供给两个映射任务?

感谢任何有关此事的指导。

由于

1 个答案:

答案 0 :(得分:0)

我也是MR的新手。我猜可能的原因如下。拆分的大小需要最大化集群的位置。如果拆分大小大于块大小,则可能一个拆分位于不同的节点中。在这种情况下,不同机器中节点的数据将被传输到第一个节点所在的节点(映射器也在该节点中),这会增加延迟。