中国海洋大学OUC-计算机系统工程导论-曲海鹏-第六次论文讨论-MapReduce

阅读:
论文“MapReduce: Simplified Data Processing on Large Clusters”。 该论文发表在 OSDI '04上。作者来自 Google。阅读时,第 4、7 节可略过。


问题:
阅读 1-3 节,能够理解和解释 Figure 1 (the "Execution overview") 。阅读 5-6 节,了解其在实际中的性能。

尝试回答这个 Hello World 问题:How do stragglers affect performance?

阅读过程中思考的问题:
1.MapReduce 的编程模式是受限的,收益值得接受这种限制吗?
2.MapReduce 能够处理哪些错误?它是如何处理这些错误的?
为讨论准备的问题(上交):
1. 工程师提出 MapReduce 的编程模型和实现,他们的性能目标是什么?
2. Google 是怎么通过实现去满足这些目标的?
3. MapReduce 为什么选择这样实现,而没有走其他技术道路?


要求:
按默认要求。


拓展阅读(自选):
关于 MapReduce 的不同观点:
“MapReduce and Parallel DBMSs: Friends or Foes?”,作者是图灵奖获得者,数据库学者Michael Stonebraker 等人。
以及“MapReduce: A major step backwards”,作者 David DeWitt 等人。

MapReduce

  1. 工程师提出 MapReduce 的编程模型和实现,他们的性能目标是什么?
       过去,作者公司的人实现了大量的用于不同目的的计算程序来处理原始数据,来计算衍生数据,大多数这样的计算在概念上都很简单,然而输入的数据却通常是巨大的。而且为了能在一个合理的时间范围内完成,计算操作需要被分配到数百甚至数千台机器上运行。因此,他们的性能目标是尝试创建一个新的抽象,他能完成并行计算、分配数据和处理故障等任务,同时,只需要对接口实现,在大型的商品级PC集群中也能获得很高的性能。
  2. Google 是怎么通过实现去满足这些目标的?

通过实现MapReduce函数,来实现目标。

通过不断的分配任务,完成分配任务。将用户输入的文件分割,建立多个程序副本,相当于将程序也分割成多个进行任务,然后又建立多个map任务和reduce任务(相当于将MapReduce函数分为两部分),内存也进行了分割,对 key 进行排序令所有具有相同 key 的数据聚集在一起,reduce的结果区也被分配成多个,实现分配数据和任务。

通过分割后的每部分仍然能够独立完成任务,来实现并行计算,每个程序副本中会有一个master和多个worker,master 会将一个 map 或 reduce 任务分配给一个闲置的 worker,worker读入输入内容,进行map函数,得到key/value pairs值,把数据写入相应的内存位置,多个程序副本同时进行该过程,实现并行计算。

Reduce中的worker会遍历排序后的中间数据,将找到其中的一个特殊key(每一个分割后的内存都有一个特殊key),再将这个key和对应的value集合作为参数,进行reduce函数,形成一个最终结果,当所有map和reduce完成后,用户程序完成,MapReduce函数返回。

通过周期检测,来实现处理故障。程序副本中的reduce和map的master都会周期ping命令每个worker来“监工”,如果该worker没有回复,那么master就认为该worker已经失效,那么将该worker之前所有的任务(完成或未完成)都重新分配给其他worker,同时还设置了检测master是否故障的机制(事实上,master只有一台机器,所以故障可能性非常小,这也说明了该容错机制的全面),来实现处理故障。


3. MapReduce 为什么选择这样实现,而没有走其他技术道路?

   有利于持续改进,根据迭代原理,当该函数需要持续改进时,要尽可能使他容易修改,通过尽可能每个阶段进行详细的分工,有利于优化局部功能,方便以后得持续改进。

   MapReduce函数需要进行大规模数据处理,通过该函数可以简化之前每次任务都重新设计计算程序的窘境,这样设计并行机制,有利于更快的处理数据,保证了程序的性能。这样设计分配数据,能够保证每一部分都模块化,有利于数据处理,保证了一致性。这样设计的容错机制,能够减少错误发生,且处理错误更准确,保证了程序的完整性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值