概述
MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。
MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。
原理
先执行map,然后再执行reduce,map先做局部处理,然后再由reduce进行汇总,这里的map会分散在集群的每一个节点中,
用来处理本节点的文件块数据,以达到分布式计算的效果,框架在map处理完成之后,将所有kv对缓存起来,进行分组,然后传
递一个组<key,valus{}>(迭代器),调用一次reduce方法,然后再输出k,v对给reduce汇总,最后reduce输出k,v对到指定文件中;
map任务处理
1.读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函
数,也就是每读文件的一行就调用一次map方法。
2.写自己的数据处理逻辑,对输入的key、value处理,转换成新的key、value输出。
reduce任务处理
1.在reduce之前,有一个shuffle的过程对多个map任务的输出进行合并、排序。
2.写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
3.把reduce的输出保存到文件中。
例如: