MapReduce的基本模式和处理思想:三个层面的基本构想
1 .应对大数据:分而治之
对于互不存在计算依赖关系的大数据,实现并行化的最自然方法是采取分治策略。
2 .上升为抽象模型: Mapper和Reduce
MPI等并行计算方法缺乏高层并行编程模型,程序员需要自行指定存储、计算、分发等任务。 为了克服这个缺点,MapReduce借鉴Lisp函数型语言的思想,用Map和Reduce两个函数提供了高层并行编程模型的抽象。
3 .上升到体系结构:统一体系结构,为程序员隐藏系统层细节
MPI等并行计算方法缺乏对统一计算框架的支持,程序员需要考虑数据存储、划分、分发、结果收集、错误恢复等诸多细节,因此,MapReduce设计了同意的计算框架
大数据分型治疗
创建地图和Reduce抽象模型
借鉴函数型编程语言Lisp的思想,定义了Map和Reduce两个抽象的操作函数。
map:(k1:v1 )-() k2:v2 ) (reduce: ) k2: ) v2 )-) ) k33:v3 ) ]
每个映射处理相同结构、相同大小的初始数据块或(k1:v1 )。 其中k1是主键,可以是块索引或块地址。
v1是数据。 经过Map节点的处理,产生许多中间数据集,[]表示数据集的含义。 另一方面,Reduce节点接收的数据是合并了中间数据的数据,也就是说是合并了key值相等的数据的数据。 (k2: ) v2) ); 经过Reduce处理,生成处理结果。
例如,要一个一个地数一个英语文章中各单词出现的次数
1 .有要处理的大数据,被分割成64MB等相同大小的数据库和对应的用户作业程序。
2 .系统包括负责调度的主节点(Master )和数据映射和重做工作节点(Worker )。
3 .用户作业发送主节点。
4 .主节点用于定位和部署可用的用于工作程序的Map节点,并将该程序转发到Map节点。
5 .主节点也查找并部署作业程序的可用Reduce节点,并将程序转发到Reduce节点。
6 .主节点启动每个Map节点执行程序,每个Map节点尽可能地读取并计算本地或主机架数据。 (使代码接近数据,减少集群中数据的通信量。
7 .各Map节点处理读取的数据块,进行一些数据整理工作(combining、sorting等),将数据保存在本地机器上; 它还通知主节点计算任务已完成,并通知主节点中间结果数据的存储位置。
8 .主节点等所有映射节点计算完成后,Reduce节点开始运行; Reduce节点根据主节点掌握的中间结果数据的位置信息,远程读取这些数据。
9.Reduce节点的计算结果将汇总输出到结果文件中。 也就是说,得到了整个处理结果。