MapReduce
一、概述
Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到Hadoop 集群上用于并行处理大规模的数据集。
MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由 map
以并行的方式处理,框架对 map
的输出进行排序,然后输入到 reduce
中。MapReduce 框架专门用于 <key,value>
键值对处理,它将作业的输入视为一组 <key,value>
对,并生成一组 <key,value>
对作为输出
二、编程模型简述
以词频统计为例进行说明,MapReduce 处理的流程如下:
1.input: 读取文本文件
2.splitting:将文件按照行进行拆分,得到K1行数,V1表示对应的内容
3.mapping:并行将每一行按照空格进行拆分,得到List<K2,V2>,K2代表单词,V2代表单词出现的次数。
4.shuffling:由于 Mapping
操作可能是在不同的机器上并行处理的,所以需要通过 shuffling
将相同 key
值的数据分发到同一个节点上去合并,这样才能统计出最终的结果,此时得到 K2
为每一个单词,List(V2)
为可迭代集合,V2
就是 Mapping 中的 V2;
5.reducing:统计单词出现的总次数,所以计算结果,最终输出。
MapReduce 编程模型中splitting和shuffing操作都是由框架实现的,需要我们自己编程实现的是mappering和reducing,这也是MapReduce这个称呼的来源。