MapReduce用于计算大量数据。为了以并行和分布式的形式处理即将到来的数据, 数据必须来自各个阶段。
MapReduce数据流的阶段
输入阅读器
输入读取器读取即将到来的数据, 并将其拆分为适当大小(64 MB至128 MB)的数据块。每个数据块都与一个Map函数相关联。
输入读取数据后, 它将生成相应的键值对。输入文件位于HDFS中。
注意-输入数据可以是任何形式。
地图功能
映射函数处理即将到来的键值对, 并生成相应的输出键值对。地图的输入和输出类型可能彼此不同。
分区功能
分区函数将每个Map函数的输出分配给适当的reducer。可用的键和值提供此功能。它返回减速器的索引。
改组和排序
数据在节点之间/节点内被重新排序, 以便将其从地图中移出并准备进行处理以简化功能。有时, 数据改组可能会花费大量计算时间。
对用于Reduce功能的输入数据执行排序操作。在此, 使用比较功能对数据进行比较, 并以排序形式进行排列。
减少功能
Reduce功能分配给每个唯一键。这些键已按排序顺序排列。与键关联的值可以迭代Reduce并生成相应的输出。
输出作家
一旦数据来自上述所有阶段, 输出编写器便会执行。 Output writer的作用是将Reduce输出写入稳定存储。
评论前必须登录!
注册