有关Map-Reduce的基础理论
来源:互联网 发布:图像矩阵有负值 编辑:程序博客网 时间:2024/05/12 00:25
一、背景
Map-Reduce是一种计算模型,能够实现多个大规模并行计算过程,并能够保障对硬件故障的容错性;google在计算pagerank中遇到难题后,将其发扬光大,并进行简化。当前在很多框架下,我们只需要编写Map-Reduce函数,系统能够管理Map或者Reduce并行任务的执行及任务间的协调,计算过程如下:
1、多个Map任务,每个任务的输入是DFS的一个或者多个文件块,Map任务将文件块转化为一个键值对(key-value),从输入数据产生键值对的具体方式由用户编写的Map函数代码决定
--注:
1)map任务的输入文件看成由多个元素构成,元素可以是任何类型,比如一个元组、或者一篇文档;通常输入元素的键无关紧要,之所坚持输入输出都是键值对的模式,主要对考虑多个map-reduce过程组合需要;
2)Map函数将输入元素转换成键值对,其中的键、值可以是任何类型,且此处的键非一般意义上的键,既不需要唯一性,恰恰相反,一个Map任务可以生成多个具备相同键的键值对,即使键来自同一元素;
思考:某些情况下,为了生成键值对而生成键值对;
如关系代数计算中的选择运算生成【t,t】;
投影运算生成【t,t】;
自然链接运算【b,(R,a)】,【b,(S,c)】等(元组形式,R(a,b),S(b,c));
分组与聚合计算【a,b】(元组形式(a,b,b));
矩阵乘法,需要组合两个Map-Reduce过程进行处理;
2、主控制器从每个Map任务中收集一系列键值对,并将其按照键大小进行排序,又被分到所有的Reduce任务中,所有具备相同键的键值对归到同一Reduce任务中;
--注:
主控进程知道Reduce任务的数目,比如说r个,该数目可有用户确定;主控进程通常选择一个hash函数作用于键,并产生一个0到r-1的budget编号;Map任务的输出的每个键被hash函数作用,根据结果分配到r个本地文件中的一个;每个文件都会被指派给一个Reduce任务;主控进程将Map输出结果合并,形成key-list-of-value pair(键--值表);对个每个键看,处理k的Reduce任务的输入形式是【k,(v1,v2,v3,.....Vx)】,其中,【k,v1】...【k,vx】来自Map产生的同样键的键值对。
3、Reduce任务每次作用于一个键,并将于此键关联的所有值以某种方式组合起来,具体取决于Reduce函数代码
思考:常见的关系代数计算包括和、差、并、交、选择、投影、及矩阵乘法都可以通过Map-Reduce任务完成,出乎意料,而且其中键值对的设置有些意思如:
1)如关系代数计算中的选择运算,对于关系R中的某个元组t,生成【t,t】;
2)投影运算,对于关系R中的某个元组t,通过剔除t中属性不再S中的字段得到原则tx,生成【tx,tx】;
3)自然链接运算,例如对于关系R(a,b),S(b,c)),生成【b,(R,a)】,【b,(S,c)】等
4)分组与聚合计算,例如对于关系R(元组形式(a,b,c)),生成【a,b】;Reduce函数【a,(b1,b2,b3....)】,按照Reduce的逻辑运算,得到【a,x】
5)矩阵乘法,需要组合两个Map-Reduce过程进行处理;Map函数产生【(i,k),(M,j,mij)】、【(i,k),(N,j,njk)】......
- 有关Map-Reduce的基础理论
- Map-Reduce的过程
- mongoDB的map reduce
- map&reduce的用法
- javascript 的 map/reduce
- map/reduce的简单实现
- Python 扯淡的Map-Reduce
- Map-Reduce的过程解析
- Map-Reduce的过程解析
- Map-Reduce的过程解析
- Map-Reduce的过程解析
- Hadoop :Map/Reduce的理解
- map/reduce 过程的认识
- map和reduce的泛型类
- Map-Reduce的过程解析
- map-Reduce的运算过程
- Map/Reduce的GroupingComparator排序
- Map-Reduce的过程解析
- 第十三周上机项目5--(2) 字符串复制
- 单链表逆置
- 通过缓存安装Karma和Jasmine并进行AngularJS单元测试
- C++中vector用法
- uva 11248
- 有关Map-Reduce的基础理论
- awk命令详解
- new和malloc的区别
- 静态数据成员
- Lucene:基于Java的全文检索引擎简介
- 位运算操作相关
- unity3d Mathf.Cos使用
- 自学笔记之插入排序
- SSH 安全外壳协议的基本知识