📜  MapReduce中的数据流

📅  最后修改于: 2020-12-03 01:43:14             🧑  作者: Mango

MapReduce中的数据流

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

MapReduce数据流的阶段

输入阅读器

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

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

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

地图函数

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

分区函数

分区函数将每个Map函数的输出分配给适当的reducer。可用的键和值提供此函数。它返回减速器的索引。

改组和排序

数据在节点之间/节点内被随机排序,以便将其从映射中移出并准备进行处理以简化函数。有时,数据改组可能会花费大量计算时间。

对减少函数的输入数据执行排序操作。在此,使用比较函数对数据进行比较并以排序形式进行排列。

减少函数

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

输出作者

一旦数据来自上述所有阶段,输出编写器便会执行。 Output writer的作用是将Reduce输出写入稳定存储。