关于MapReduce

简介

简单地通过一个实际的例子来对之前一直觉得高深莫测的hadoop的核心mapredue进行分析.hadoop权威指南第三版书中也有详细的讲解过程,大佬用简单的一个例子生动形象地道出了天机.以下是我个人对这个例子的总结.作者Tom White很巧妙的用实际的例子,让hadoop很自然地跃然纸上,衔接的很完美,读者的印象也更加深刻.

挖掘气象数据集(求每年全球气温的最高温度)

数据格式

这里涉及成千上万个气象台每年的数据文件,每个气象台会每隔一小时收集气象数据,每个气象台会发提供全年的记录.

数据预处理

将成千上万个气象台,按年份拼接成一个独立的文件.

使用Hadoop来分析数据

此处先进行本地的小规模测试.下面的介绍也是小规模的测试的详细描述.这个步骤可以理解成为把大的任务分解成小任务,平均分配到每一台机子上面.本地测试也可以使得代码质量的准确性的提高.

map和reduce

mapreduce就是map和reduce两个工作的结合,先map后reduce.下面结合这个实例分析,来解释这两个功能.

上面就是map的操作,为reduce操作进行数据的第二次处理.

MapReduce的逻辑数据流,reduce的工作如下图:

横向扩展

前面介绍了MapReduce针对少量输入数据是如何工作的,下面开始讨论大数据输入的情况.


一个reduce任务的MapReduce数据流

多个reduce任务的MapReduce数据流

上图针对这个例子的解释,sort有两个分支是因为1949和1950两年的数据,后面reduce的merge中接收应该分别处理.这边的map任务和reduce任务之间的数据称为shuffle(洗牌,混洗),因为每个reduce任务的输入都是来自许多map任务(气象数据例子中以年为单位的数据块)

combiner函数(求最大值可以,求平均值不行)



欢迎大家关注:huazi's微信公众号