此系列是本人浅读《Hadoop权威指南(第三版)》的一些用更通俗,好理解的形式做的总结,具体参考原版。
MapReduce是Hadoop的核心和基础,他是一个处理数据的编程模型,虽说有了hive之后因为非常简单易上手,很多不是程序员的人也可以很好的利用Hadoop去做大数据分析处理来代替写MapReduce程序,但是本人认为对于掌握Hadoop、大数据处理生态,它还是有学习的必要性的。
理论介绍
MapReduce分为两个阶段,即map和reduce两个阶段。每个阶段的输入和输出都是以键值对的方式。
①Map阶段 :输入键值对a 输出键值对b
shuffle阶段 :书上说是经由MapReduce框架处理后,我的理解是对所有map阶段产生的键值对b加工汇合整理,得到键值对c)
②Reduce阶段 :输入键值对c,输出键值对d(结果)
具体例子演示
※※背景:查找每一年份最高气温
※※数据(键值对a):
说明:
每一个键值对就是一个采集样本数据
key ,可以把它理解为就是采集样本的序号吧,这个不重要
value,就是样本那一年采集某一段时间的气候数据组成,例如湿度、温度等气候要素转化为数据拼接表示,其中加粗的是年份和温度,所以其他数据并不重要;
所以map阶段输入的数据,其实只有加粗的年份和温度两个数据是有用的。※※Map阶段:过滤数据,整理有用的数据
输入:键值对a(即上述数据)
输出:
※※shuffle阶段:(MapReduce框架处理,将键值对整理汇合排序和分组)
输入:键值对b(即上Map输出)
输出:
※※Reduce阶段:(遍历整个列表找出最大的读熟)
输入:键值对c(即上shuffle输出)
输出:
这就是最终结果,