MapReduce 中的数据流

17 Mar 2025 | 阅读 2 分钟

MapReduce 用于计算大量数据。 为了以并行和分布式形式处理即将到来的数据,数据必须流经各个阶段。

Data Flow In MapReduce

MapReduce 数据流的阶段

输入读取器

输入读取器读取即将到来的数据,并将其拆分为适当大小的数据块(64 MB 到 128 MB)。每个数据块都与一个 Map 函数相关联。

输入读取数据后,它会生成相应的键值对。输入文件位于 HDFS 中。

注意 - 输入数据可以是任何形式。

Map 函数

Map 函数处理即将到来的键值对,并生成相应的输出键值对。 Map 的输入和输出类型可能彼此不同。

分区函数

分区函数将每个 Map 函数的输出分配给相应的 Reducer。可用键和值提供此功能。 它返回 Reducer 的索引。

洗牌和排序

数据在节点之间/节点内进行洗牌,以便将其从 Map 中移出,并准备好供 Reduce 函数处理。有时,数据的洗牌可能需要很长的计算时间。

对 Reduce 函数的输入数据执行排序操作。在这里,使用比较函数比较数据,并将其排列成排序形式。

Reduce 函数

Reduce 函数分配给每个唯一的键。 这些键已经按排序顺序排列。 与键关联的值可以迭代 Reduce 并生成相应的输出。

输出写入器

一旦数据从上述所有阶段流出,输出写入器就会执行。 输出写入器的作用是将 Reduce 输出写入稳定存储。

下一个主题MapReduce API