谷歌mapreduce中文版

摘要
mapreduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建一个map函数处理一个基于key/value的数据集合,输出中间的基于key/value pair的数据集合,然后再创建一个Reduce函数用来合并素有的具有相同key值的中间value值。现实世界有很多满足上述处理模型的例子,本论文讲详细描述这个模型。
mapreduce架构的程序能够在大量的普通配置的计算机上实现并行化处理。这个系统在运行时只关心:如何分割数据,在大量计算机组成的集群上的调度,集群中计算机的错误处理,管理集群中计算机之间必要的通信。采用MapReduce架构可以使那些没有并行计算和分布式处理系统开发经验的程序员有效利用分布式系统的丰富资源
我们的mapreduce实现并运行规模可以灵活调整的普通计算机组成的集群上:一个典型的MapReduce计算机往往由几千台计算机组成、处理以TB计算的数据。程序员发现这个系统非常好用:已经实现了数以百计的mapreduce程序,在google集群上,每天有1000多个mapreduce程序在执行。
介绍
在过去的5年里,包括本文作者在内的很多的谷歌程序员,为了处理海量的原始数据,已经实现了数以百计的,专用的计算方法。这些计算方法用来处理大量的原始数据,比如,文档抓取,web请求日志等等;也为了计算处理各种类型的衍生数据,比如倒排索引、web文档的图结构的各种表示形势、每台主机上网络爬虫抓取的页面数量的汇总、每天被请求的最多查询的集合等等。大多数这样的数据处理运算在概念上很容易理解。然而由于输入数据量巨大,因此要想在可接受的时间内完成运算,只有将这些计算分布在成百上千的主机上。如何处理并行计算、如何分发数据、如何处理错误?所有这些综合在一起,需要大量的代码处理,因此也使得原本简单的运算变得难以处理。
为了解决上述复杂的问题,我们设计了一个新的抽象模型,使用这个抽象模型,我们只要表述我们想要执行的简单运算即可,而不必关心并行计算、容错、数据分布、负载均衡等复杂的细节,这些问题都封装在一个库里面。设计这个抽象模型的灵感来自Lisp和许多其他函数式语言的Map和reduce原语。我们意识到我们大多数的运算都包含这样的操作:在输入数据的“逻辑”记录上应用Map操作得出一个key/value集合,然后在所有具有相同key值应用Reduce操作,从而达到合并中间的数据,得到一个想要的结果的目的。使用MapReduce,再结合用户实现的Map和Reduce函数,我们就可以非常容易的实现大规模并行化计算;通过Mapreduce模型自带的再次执行功能,也提供了初级容灾实现方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值