简介
简单地通过一个实际的例子来对之前一直觉得高深莫测的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任务(气象数据例子中以年为单位的数据块)