7.1 概述
7.1.1分布式并行编程
1.很长一段时间里,CPU遵循摩尔定律,每18个月性能翻一番,价格降一半
2.分布式并行编程与传统的程序开发方式有很大的区别,传统都是以单指令,单数据流的方式顺序执行,但是这样性能收到了单台机器的限制,但是分布式并行程序可以通过向集群中增加单节点来提高集群的能力扩充
3.谷歌首先提出了分布式并行编程模型MapReduce,Hadoop MapReduce是它的开源实现,谷歌的MapReduce运行在GFS中,Hadoop MapReduce运行在HDFS上
7.1.2MapReduce模型简介
1.用MapReduce 来处理的数据集需要满足,数据集可以被拆分成多个小数据集,而且每个小数据集可以完全并行的处理
2.MapReduce的设计理念是“计算向数据靠拢”,因为移动数据需要很大的网络开销,所以,移动计算比移动数据更经济
3.MapReduce框架采用Master/Slave架构,包括一个Master和若干个slave,Master上运行JobTracker,slave上运行TaskTracker,JobTracker负责作业和任务的调度,监控他们的执行,TaskTracker负责执行由JobTracker指派的任务
4.Hadoop框架是用Java实现的,但是MapReduce不一定要用Java来写
7.1.3Map 和 Reduce函数
1.Map和Reduce函数都是以键值对作为输入,按一定规则映射成另一个键值对进行输出
2.Map的输入来自分布式文件系统的文件块,这些文件块的格式是任意的,同一个元素不能跨文件块存储,Map的键值的类型也是任意的,其中,键不同于一般的标志属性,就是键没有唯一性,
3.Reduce的任务就是把输入的一系列具有相同键的键值对以某种方式组合起来,输出结果会合并成一个文件,用户可以指定Reduce的个数,并通知实现系统,然后主控进程通常会选择一个Hash函数,Map任务输出的键都会经过这个Hash函数计算
7.2 MapReduce的工作流程
7.2.1工作流程概述