MapReduce 是一种处理和生成大规模数据集的编程模型和算法。它将一个大的数据集分成许多小的数据块,然后在分布式计算集群上进行处理。下面是一个简单的 Word Count 示例的 MapReduce 执行流程,并画出了 Map 和 Reduce 阶段前后的数据变化:
-
输入数据:一段文本(一般hdfs)
-
Map 阶段:
- 输入:一行文本
- 输出:(单词, 1) 对的列表
- 示例:
- 输入:
"Hello world"
- 输出:
[("Hello", 1), ("world", 1)]
- 输入:
-
Shuffle 阶段:将相同键的值发送到同一个 Reduce 任务中
-
Reduce 阶段:
- 输入:(单词, [1, 1, ...]) 对的列表
- 输出:(单词, 单词出现的总次数) 对的列表
- 示例:
- 输入:
[("Hello", [1, 1]), ("world", [1])]
- 输出:
[("Hello", 2), ("world", 1)]
- 输入:
-
输出数据:单词及其出现的总次数列表(hdfs)
下面是一个简单的示意图,展示了 Word Count 示例的 MapReduce 执行流程: