出生
在大数据时代,需要解决的两大问题是大规模数据的高效存储和计算;在Hadoop生态中对应的就是HDFS和MapReduce。
MapReduce 是分布式并行编程模型,最早由Google提出,而Hadoop是对其的开源,降低了程序员的开发门槛;
组成
MapReduce 模型的核心是两大函数:Map 函数和Reduce 函数。
设计理念
“计算向数据靠拢”,因为移动数据需要消耗大量的网络开销,尤其在大数据的情况下尤为惊人;所以,MapReduce框架会将Map程序就近地在HDFS所在的数据节点进行运行(计算与存储一起),从而减少数据移动的开销;
工作流
MapReduce 的核心思想是“分而治之”,即将大数据集切分成多个小数据块在多台机器上并行处理,最后汇总聚合出结果的过程;
下面介绍下基本的执行过程:
(1)使用InputFormat模块做Map前的预处理,然后将输入的文件切分成逻辑上的InputSplit,InputSplit是MR对文件进行处理和运算的输入单位,记录了要处理数据的位置和长度;
(2)通过RecordReader(RR)根据InputSplit中的信息来处理具体的记录,加载数据并转换为合适Map任务读取的键值对,输入给Map;
(3)Map任务根据用户定义的映射规则,输出一系列的<key,value>作为中间结果;