1. MR基本概念
MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。
MapReduce由两个阶段组成:Map阶段和Reduce阶段,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。
map()和reduce()的形参都是<key,value>对,表示方法的输入信息,其中map()方法的输入是整个系统的输入,reduce()方法的输出是整个系统的输出。
2. MR中的map()和reduce()如何编写
map()编写逻辑:
1)获取日志的一行数据
2)切割各个字段,获取所需字段
3)若所需字段过多,可以考虑使用hadoop中自定义的数据类型进行封装处理
4)reduce()编写逻辑就是遍历<key,value>对中的value,进行相应的处理,形成<key2,value2>
3. MR程序的基本编写流程
Mapper阶段:
1)读取文件 解析成key,value对,这里key,value对指的是key1,value1
2)自定义Map逻辑 接收第一步读取的key1,value1,转换成新的key,value对,即key2,value2
shuffle阶段:
3)分区 相同key的数据发送到同一个reduce形成一个集合,这里的key指代是key2
4)排序 对数据进行字典顺序的排序
5)规约 主要是对Map端对数据进行一次聚合,减少输出key2的数据量
6)分组 将相同的数据发送到同一组,调用一次Reduce逻辑
Reducer阶段:
7)自定义Reduce逻辑,接收key2,value2转换成新的key3,value3进行输出
8)输出 将Reduce处理完成的数据进行输出