摘要:用户确定一个map映射函数来处理一个键值对来生成一系列中间的键值对,然后一个reduce规约函数来合并所有相同中间key(group)的中间value。
实时系统关系划分输入数据的细节,不同机器上调度程序执行,处理机器宕机问题,和管理要求的机器之间的交流。
我们意识到我们大多数的计算包含应用一个map操作到每个逻辑档案(record),是为了计算一系列的中间的键值对,然后应用所有数据(具有相同的key)一个reduce规约操作,是为了合适地结合划分数据。
2 Programming Model
包括两个函数:Map, Reduce
Map: 由用户编写,输入对并产生一系列中间的键值对。根据相同的中间key来分组所有的中间值,再传输给规约函数。
Reduce: 用户编写,得到中间键key 和一系列对应的值。合并这些值来构成一个可能更小的值集合。每个规约函数期望的输出值个数为0-1个输出。输入到reduce函数的中间值是通过迭代器以此取出。这运行我们处理太大而不能一次读取到内存的列表。
Example:

map(String key, String value):
//key: document name
//value:document contents
for each word w in value:
EmitIntermediate(w, ‘1’);

reduce(String key, Iterator values):
// key : a word
// values : a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
map函数对每个词加上一个关联的出现次数计数(该例子中就是1)。规约函数对每个相同次发出的计数相加。
map : (k1, v1) -> list ( k2, v2)
reduce: (k2, list(v2)) -> list(v2)
也就是输入的键值对和输出的键值对不是同一领域,并且中间的键值对和输出键值对是同一领域。

执行过程:准备工作:输入部分(首先把数据等分),用户程序fork出Master线程,map 的worker线程, reduce的worker线程。
接下来,master调用map 的worker将部分数据读入,并生成中间键值对,写入本地硬盘。
再master调用reduce的worker 将(远程)硬盘中的中间键值对读取,得到最终的输出写入文件。

3 Master 数据结构
master节点必须包含一些信息,例如对于每个map和reduce任务,master节点需要存储每个worker的状态(闲置,进程中,完成)和(对于非闲置任务)worker机器的身份。
master节点是通道,中间文件区域的定位从map任务传到reduce任务。隐藏对于每个完成的map任务,master节点存储R个中间文件区域的定位和大小。当map任务完成时更新这些文件定位和大小。这些信息不断传给工作中的reduce任务worker。

总结:Master(works, states(1~w), identifies(1~w), location(1~R), size(1~R)).

3.3 Fault Tolerance
worker宕机
master节点周期性地ping每个worker(心跳机制)。
任何maps 任务由worker完成后都重设为闲置状态。相似的,任何在处理中的map或者reduce任务在一个宕机的worker上也会重设为闲置状态。

已完成的map任务出现失败后需要重新执行,因为其输出存储在宕机worker上无法得到。完成的reduce任务不需要重新执行因为其输出存储在全局文件系统中。

总结: map任务处理结果在本地硬盘,而reduce任务从远程得到数据,处理完后上传全局文件系统。

Master 宕机
master节点需要周期性记录master的数据结构的checkpoints。当一个master die后复制该信息冲上一个checkpoint继续开始。一般当master节点die后终止mapreduce计算,并重启操作。(一般设为两个master节点)

在出现failures时的语义:
当用户设定的map和reduce操作是确定性的函数,分布式实现产生的结果和由一个无错误的序列化执行得到结果相同。
一个reduce任务产生一个私有的临时文件,一个map任务产生R个私有文件。当map任务完成时,发生消息给master, 其包括R个临时文件的名称。若master接受完成信息,它会忽略该文件名信息。否则,master节点会记录R个文件的名称。

当一个reduce任务完成,reduce woker原子性地改名其临时的输出文件为最终的输出文件。若相同的reduce任务在多机上执行,多个改名调用将为相同的最终输出文件执行

3.4 定位
网络带宽在计算环境中是个非常稀缺资源。我们保存网络带宽通过利用一个事实,就是存储在本地硬盘的输入数据(由GFS管理)来组成集群。GFS划分每个文件为64Mb,并在不同机器上存储每个块的副本(一般为3)。MapReduce的master节点考虑输入文件的定位信息,并试图调度一个map任务在一台机器,其包含一个对应输入数据的副本。若失败了,则调度该任务输入数据近邻的副本的一个map任务(例如,在相同网络中的worker机器,转化到包含数据的另一个机器)。所以大多数数据读取都是局部的,没有消耗带宽。

3.5 任务粒度granularity(间隔尺寸)
我们将map节点划分成M块,reduce节点划分成R块。理想情况,M和R应该是大于worker机器的个数。使这些worker完成许多不同的任务来提升动态加载平衡,也当worker宕机时及时恢复:许多map任务完成时可以传播到所有worker机器中。
M和R的小在实际中有约束,master节点必须在O(M+R)复杂度中做出调度决策,并保留O(M*R)(很小)个状态在内存中。O(M*R)块个状态只有一个字节,对于每个map/reduce任务对。
进一步,R经常受用户约束因为每个reduce任务的输出值都是在分离的输出文件里截止。实践上,我们试图选择M的大小,以便于每个独立的任务分配大约16M到64M的输入数据(以便于locality位置优化是最有效的???),我们让R为一个较小的worker数的乘子。我们经常设定M = 200000, R = 5000, 使用2000个workers机器。

3.6 Backup(阻塞)任务
一个普遍的原因导致总时间增长的Straggler的出现:一个机器用了很长的时间来完成上次少量的map或者reduce任务之一。落伍者

MapReduce论文相关推荐

  1. MapReduce论文阅读记录

    本文为阅读MapReduce论文的记录,内容主要是论文的第三部分--实现.方便本人今后查看. 1. 运行概述 下图展示了 MapReduce 过程的整体情况 当用户程序执行 MapReduce 时,会 ...

  2. MapReduce论文精读

    文章目录 概述 研究意义 编程模型与系统实现 编程模型 Map Reduce 示例:统计文档中所有单词的出现次数 系统实现 基本流程 容错处理 worker异常 master异常 locality T ...

  3. MapReduce论文阅读思维导图

    [前言]准备开始经典课程MIT-6.824的学习之旅了,希望可以成功完成- 阅读mapreduce论文所做的思维导图,方便过后回顾.

  4. MapReduce论文中文版

    摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.用户首先创建一个Map函数处理一个基于 key/value pair的数据集合,输出中间的基于key/valu ...

  5. MapReduce 论文翻译

    目录 1 介绍 2 编程模型 3 实现 4 技巧 5 性能 6 经验 7 相关工作 8 结束语 附录A.单词频率统计 原文下载链接:https://pan.baidu.com/s/1L9hclpiqQ ...

  6. MapReduce论文中文版--The Google File System

    摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.用户首先创建一个Map函数处理一个基于 key/value pair的数据集合,输出中间的基于key/valu ...

  7. Google MapReduce论文中文版

    摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.用户首先创建一个Map函数处理一个基于 key/value pair的数据集合,输出中间的基于key/valu ...

  8. 谷歌分布式计算框架MapReduce论文2004 中文翻译

    MapReduce:超大机群上的简单数据处理                                             摘要 MapReduce是一个编程模型,和处理,产生大数据集的相关 ...

  9. mapreduce 论文(中文翻译)

    MapReduce:超大机群上的简单数据处理                                             摘要 MapReduce是一个编程模型,和处理,产生大数据集的相关 ...

  10. MapReduce论文- 中文翻译

    MapReduce:超大机群上的简单数据处理                                            摘要 MapReduce是一个编程模型,和处理,产生大数据集的相关实 ...

最新文章

  1. Pycharm中实现查找和替换
  2. “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作
  3. nginx优化 突破十万并发
  4. DOJO试用手记3--异步通信【原创】
  5. [转]linux tr命令详解
  6. Java调试器和超时
  7. Django框架——模型(数据库操作)
  8. 【cocos2d-x从c++到js】14:注册函数
  9. 信息学奥赛一本通(1237:求排列的逆序数)
  10. android5.1移植记录
  11. 通过BizTalk WCF适配器实现异构数据库/系统间的数据同步
  12. MySQL Control Flow Functions(控制流)
  13. android 毕业设计论文总结报告,android课程设计报告.doc
  14. python新浪微博爬虫_利用新浪API实现数据的抓取\微博数据爬取\微博爬虫
  15. php制作入库单,教你如何利用vba制作自动登记数据的仓库入库单
  16. 全新 安卓项目源码 记事本APP。Andro idStudio项目
  17. 【渝粤教育】电大中专计算机网络基础_1作业 题库
  18. android编码技巧_我如何使用编码技巧使航空公司取代丢失的婴儿车
  19. 如何玩转OA系统业务审批流程
  20. scp_linux之间互传文件

热门文章

  1. list遍历_Qt 容器类之遍历器和隐式数据共享
  2. python第一周小测验_测验1: Python基本语法元素 (第1周)-程序题
  3. linux命令cp -a,linux命令_ls命令与cp命令详解(一)
  4. c# 中wpfexcel_VS2017下编写C#程序读写Excel文件
  5. ubuntu重命名移动硬盘
  6. git 删除本地仓库中的分支_git常用命令行 新建分支 删除分支 提交
  7. android 截屏_图文小编福利:Apowersoft专业截屏王
  8. java.sql.exception_java.sql.SQLException: 违反协议
  9. linux 内核4.12,Linux Kernel 4.12 发布,最新的稳定版内核
  10. 如何打造园本特色_如何确立办园特色