changjiang 2016-07-04
MapReduce任务过程被分为两个阶段:map和reduce。
每个阶段都需要以键/值作为输入和输出,程序员需要定义两个函数map(),和reduce()。
在处理天气预报整个大数据时,我们只对年份和气温这两个属性感兴趣
map函数的输出经由mapreduce框架处理后,最后被发送到reduce函数。这一过程中需要对键/值对进行排序和分组。因此reduce会收到下面的输入:
(1949,[111,78])
(1950,[0,22,-11])
每一年份后紧跟着一系列的温度,因此reduce需要做的就是遍历整个数据表找到最大的读数。
(1949,111)
(1950,22)
横向拓展:
这个例子介绍了针对少量输入数据是如何工作的,我们只用了本地文件系统中的文件,然后为了实现横向拓展,我们需要把数据存储在分布式文件系统中,一般为HDFS,由此允许Hadoop将MapReduce计算转移到存储有部分数据的各台机器上。
通过实现MapReduce计算结果保存到MySql数据库过程,掌握多种方式保存计算结果的技术,加深了对MapReduce的理解;创建maven项目,项目名称hdfs,这里不再说明。红色部分为增加内容: