论文阅读之MapReduce_simplified data processing on large clusters

MapReduce是谷歌公司提出的一种新的并行程序开发框架,其主要是为了满足谷歌公司搜索引擎数据的分析和索引,数据挖掘。
这篇文章已经发布很久了,今天读了一下,把最后一章总结翻译一下,就是对文章的最好说明了。具体MapReduce细节可以查阅网上的资料。MapReduce有一个开源的实现版本,就是Apache的Hadoop。可以参考官方网站进行了解。http://hadoop.apache.org/

以下部分是对该文章Related Work和Conclusion两章的翻译。========================================================

#相关工作#
许多异同也提供了受限的编程模式以及使用限制来进行自动化地并行计算。例如,使用并行前缀计算,一个在由N个元素的数组的所有前缀的关联函数计算可以在logN的时间内完成。MapReduce可以认为是基于我们在大量真实世界计算的经验上对这些模型的简化和升华。更为重要的是,我们提供了一个可以扩展至几千个处理器规模的容错机制的实现。相反,大部分的并行处理系统仅仅实现了小规模的容错机制,而将大量的处理机器失败的细节留给了程序员。
我们本地优化策略的灵感来源于诸如活跃磁盘等技术,即计算任务分配到离本地磁盘很近的处理元素,从而减少I/O子系统或者网络发送的数据量。
MapReduce库中的排序模块与NOW-Sort的操作相似。源机器(Map工作者)将要进行排序的数据进行拆分,然后将它分发到R个Reduce工作者中的一个。每个Reduce工作者在本地(如果可能,那么是内存)对这些数据进行排序。当然,NOW-Sort不能提供用户自定义的Map和Reduce函数,因此我们的MapReduce库能够广泛的应用。
BAD-FS和TACC是使用重新执行来实现容错的两个系统。
原文章有更加全面的有关工作的描述。

#结论#
MapReduce编程模型已经成功运用在谷歌的各个方面。我们将这归功于一下几个原因。
1.首先,这个模型很容易使用,即使是没有并行与分布式系统开发经验的程序员也会使用,因为它隐藏了并行、容错、本地优化以及负载均衡等方面的细节。
2.其次,一个非常大问题很容易使用MapReduce计算模型来进行表述。例如,MapReduce被用来为谷歌生产Web搜索引擎产生数据,排序、数据挖掘、机器学习以及其他的系统。
3.再者,我们在上万台机器组成的大集群上面进行了MapReduce的实现。这个实现充分利用了机器资源并且非常适合解决谷歌大规模计算问题。

我们通过限制编程模型从而使的并行与分布式计算变得简单,并且让这些计算具有容错性。其次,网络带宽是稀有资源,我们系统中的一些优化目的在于减少通过网络发送的数据量。本地优化策略允许沃恩从本地磁盘读取数据,并将一份中间数据的拷贝写入到本地磁盘从而能节省网络带宽。最后,冗余执行任务能够用来减少慢速机器的影响、处理机器错误以及数据丢失。

========================================================

翻译结束,希望对大家有用,欢迎指正。

ZHANGCHI wechat
关注微信号进一步交流