【MapReduce】超大集群的简单数据处理 part6

 

6 经验

我们在20031月写了第一个版本的MapReduce函数库,并且在20038月作了显著的增强,包括了本地优化,worker机器之间的动态负载均衡等等。自那以后,MapReduce函数库就广泛用于我们日常处理的问题。它现在在Google内部各个领域内广泛应用,包括:

 

。大尺度的计算机学习问题。

Google NewsFroogle产品的集群问题。

。从公众查询产品(比如GoogleZeitgeist)的报告中抽取数据。

。从web网页作新试验和抽取新的产品(例如,从大量的webpage中的本地查找抽取物理位置信息)。

。大尺度的图型计算。

 

任务数

平均任务完成时间

使用的机器时间

29423

634

79,186

读取的输入数据

产生的中间数据

写出的输出数据

3,288TB

758TB

193TB

每个job平均worker机器数

每个job平均死掉work

每个job平均map任务

每个job平均reduce任务

157

1.2

3,351

55

map唯一实现

reduce的唯一实现

map/reducecombiner实现

395

296

426

1MapReduce20048月的执行情况

 

图四显示了我们的源代码管理系统中,随着时间推移,MapReduce程序的显著增加,从2003年早先时候的0个增长到20049月份的差不多900个不同的程序。MapReduce之所以这样成功是因为他能够在不到半小时时间内写出一个简单的能够应用于上千台机器的大规模并发程序,并且极大的提高了开发和原形设计的周期效率。并且,他可以让一个完全没有分布式和/或并行系统经验的程序员,能够很容易的开发处理海量数据的程序。

在每一个任务结束的时候,MapReduce函数库记录使用的计算资源的状态。在表1,我们列出了20048月份MapReduce运行的任务所占用的相关资源。

 

6.1 大尺度的索引

 

到目前为止,最成功的MapReduce的应用就是重写了Google web 搜索服务所使用到的index系统。索引系统处理蠕虫系统抓回来的超大量的数据,这些数据保存在GFS文件里。普通这些文档的大小是超过了20TB的数据。索引程序是通过一系列的,大概510MapReduce操作来建立索引。通过利用MapReduce(替换掉上一个版本的特别设计的分布处理的索引程序版本)有这样一些好处:

 

l  索引代码很简单,很小,很容易理解。因为对于容错的处理代码,分布以及并行处理代码都通过MapReduce函数库封装了,所以索引代码很简单,很小,很容易理解。例如,当使用MapReduce函数库的时候,计算的代码行数从原来的3800C++代码一下减少到大概700行代码。

l  MapReduce的函数库的性能已经非常好,所以我们可以把概念上不相关的计算步骤分开处理,而不是混在一起以期减少处理次数。这使得我们容易改变索引处理方式。比如,我们对老索引系统的一个小更改可能要好几个月的时间,但是在新系统内,只需要花几天时间就可以了。

l  索引系统的操作更容易了,这是因为机器的失效,速度慢的机器,以及网络风暴都已经由MapReduce自己解决了,而不需要操作人员的交互。此外,我们可以简单的通过对索引系统增加机器的方式提高处理性能。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值