我已被学习的MapReduce算法,以及它如何潜在地扩展到数百万的机器,但我不理解所述中间密钥的映射阶段之后的排序如何可以缩放,如将有:

1,000,000×1000000

:潜在机彼此连通的中间结果的小键/值对?这不是一个瓶颈?

有帮助吗?

解决方案

及其真实的Hadoop中的MapReduce的瓶颈之一是在群集上机之间的网络带宽。然而,来自每个映射阶段的输出被未在群集中发送到每一台机器。

地图和减少功能的数量是由正在运行的任务定义。每个地图处理输入数据时,它向排序组密钥,并将其写入到磁盘。这项工作确定有多少减少功能要适用于从地图输出。

每个减少需要看一个给定密钥的所有数据。所以,如果你有一个单一的减少运行作业的所有从每个地图的输出需要运行减少集群中要发送到的节点。的减少运行之前从各图中的数据合并到组中的所有密钥。

如果使用多个减速器,地图划分其输出,创造一个每降低。分区被发送到正确的减少。这确保了所有对于给定的密钥数据被通过处理一个单一的降低。

要帮助减少需要通过网络发送的数据的可以应用结合功能的映射的输出量。这有上运行从地图的输出减少的效果。因此可以最小化需要被转移到该减速器的数据量和加快整体作业的执行时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top