gpt4 book ai didi

sorting - Map Reduce Programming中reducer中洗牌和排序阶段的目的是什么?

转载 作者:可可西里 更新时间:2023-11-01 14:06:11 25 4
gpt4 key购买 nike

在 Map Reduce 编程中,reduce 阶段有洗牌、排序和 reduce 作为其子部分。排序是一项代价高昂的事情。

在 Map Reduce 编程中,reducer 中的洗牌和排序阶段的目的是什么?

最佳答案

首先 shuffling 是将数据从 mappers 传输到 reducers 的过程,所以我认为这对 reducers 来说是必要的,否则他们将无法有任何输入(或来自每个映射器的输入)。洗牌甚至可以在映射阶段完成之前开始,以节省一些时间。这就是为什么本地图状态尚未达到 100% 时,您会看到减少状态大于 0%(但小于 33%)的原因。

排序 为 reducer 节省时间,帮助它轻松区分新的 reduce 任务何时应该开始。简而言之,当排序的输入数据中的下一个键与前一个不同时,它只是启动一个新的 reduce 任务。每个 reduce 任务都接受一个键值对列表,但它必须调用接受键列表(值)输入的 reduce() 方法,因此它必须按键对值进行分组。如果输入数据在 map 阶段预先排序(本地)并在 reduce 阶段简单地合并排序(因为 reducer 从许多映射器获取数据),那么这样做很容易。

您在其中一个答案中提到的

Partitioning 是一个不同的过程。它确定将在哪个 reducer 中发送一个 (key, value) 对,即 map 阶段的输出。默认的 Partitioner 使用键的散列将它们分发到 reduce 任务,但您可以覆盖它并使用您自己的自定义 Partitioner。

这些步骤的重要信息来源是 Yahoo tutorial (archived)。

下面是一个很好的图形表示(随机播放在此图中称为“复制”):

enter image description here

请注意,如果您指定零化简器 (setNumReduceTasks(0)),则根本不会执行改组排序。然后,MapReduce 作业停止在 map 阶段,并且 map 阶段不包括任何类型的排序(因此即使 map 阶段更快)。

更新:由于您正在寻找更官方的东西,您还可以阅读 Tom White 的书“Hadoop:权威指南”。 Here是你的问题的有趣部分。
Tom White 自 2007 年 2 月以来一直是 Apache Hadoop 提交者,并且是 Apache 软件基金会的成员,所以我想它是相当可信和官方的...

关于sorting - Map Reduce Programming中reducer中洗牌和排序阶段的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com