Mongodb的mapreduce性能分析

这几天又进行了一下mongodb的性能分析,目前我用的是5台的sharding,2.0版本的mongodb,数据量是30G,7千万条记录。索引也有10-15G。测试的是一个mapreduce。先根据index,找到数据,然后再进行类似于group by的distinct和count操作。

我建立了两张表,一个是根据id进行sharding的,一个是根据查询条件进行sharding的,id的sharding中也建立了查询条件的索引。每个测试进行三次,为的是让所有的操作都能在内存中进行,一般来说第一次mapreduce会比较慢,第二三次mapreduce就比较快,时间也是一致的。

在以id为sharding的collection中执行mapredcue花了120秒,而以查询条件为sharding的collection中执行mapredcue中花了260秒。减低mapreduce的复杂度,只做group by的count,时间还是类似的,前置花了0.7秒,后者花了2秒。暂且不管mongodb的mapreduce的性能问题,我们可以得出结论,在分布式计算中,分到多台机器上计算比分到一台机器上计算性能有比较明显的提升。

继续进行试验,将mapreduce改成python脚本,mongodb本书只是做查询操作,把数据取出来后都在用python来进行group by的distinct和count操作。测试的是mongodb的mapreduce性能。

测试结果如下,在id为sharding的情况下mapreduce化了90秒,python脚本花了48秒。在查询条件为sharding的情况下mapredcue花了300秒,python脚本花了50秒。可以得出结论mongodb的mapreduce性能比较差,在本地做计算还不如在client做计算,这是不符合常识的。

mongodb本身的性能还是不错的,但是他的mapreduce性能不足。目前有人在将Hadoop的mapreduce移植到mongodb上,这个倒是一条好方法。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值