如何提升Mongodb的Map Reduce性能
发布网友
发布时间:2022-04-07 21:39
我来回答
共2个回答
热心网友
时间:2022-04-07 23:08
MongoDB提供了两种内置分析数据的方法:MapRece和Aggregation框架。MR非常灵活,很容易部署。它通过分区工作良好,并允许大量输出。MR在MongoDBv2.4中,通过使用JavaScript引擎把SpiderMonkey替换成V8,性能提升很多。老板抱怨它太慢了,尤其是和Agg框架(使用C++)相比。让我们看看能否从中榨出点果汁。练习让我们插入1千万条文档,每个文档包含一个从0到1000000的整数。这意味着平均有10个文档会具有相同的值。>for(vari=0;idb.uniques.findOne(){"_id":ObjectId("51d3c386acd412e22c188dec"),"dim0":570859}>db.uniques.ensureIndex({dim0:1})>db.uniques.stats(){"ns":"test.uniques","count":10000000,"size":360000052,"avgObjSize":36.0000052,"storageSize":582864896,"numExtents":18,"nindexes":2,"lastExtentSize":153874432,"paddingFactor":1,"systemFlags":1,"userFlags":0,"totalIndexSize":576040080,"indexSizes":{"_id_":324456384,"dim0_1":251583696},"ok":1}从这其中,我们想要计算出现的不同值的个数。可以用下列MR任务轻松完成这个工作:>db.runCommand({maprece:"uniques",map:function(){emit(this.dim0,1);},rece:function(key,values){returnArray.sum(values);},out:"mrout"}){"result":"mrout","timeMillis":1161960,"counts":{"input":10000000,"emit":10000000,"rece":1059138,"output":999961},"ok":1}正如你在输出内容中看到的,这耗费了大概1200秒(在EC2M3实例上进行的测试)。有1千万个map,1百万个rece,输出了999961个文档。结果就像下面这样:>db.mrout.find(){"_id":1,"value":10}{"_id":2,"value":5}{"_id":3,"value":6}{"_id":4,"value":10}{"_id":5,"value":9}{"_id":6,"value":12}{"_id":7,"value":5}{"_id":8,"value":16}{"_id":9,"value":10}{"_id":10,"value":13}
热心网友
时间:2022-04-08 00:26
这两个是什么东西
如何提高mongodb查询速度
当为表(集合,collection)加上索引后,我们的WEB页面测试一下可以看到,页面响应在ms级,非常快!对于单表查询来说,MongoDB在添加了索引后,执行的速度和稳定性确实是可以信赖的,在进行复杂计算时,MongoDB也为我们提供了MapReduce功能,在以后的文章中也会单独讲它!
谁能说说mangodb 和 hbase的区别
7.mongodb和hbase都支持mapreduce,不过mongodb的mapreduce支持不够强大,如果没有使用mongodb分片,mapreduce实际上不是并行执行的 8.mongodb支持shard分片,hbase根据row key自动负载均衡,这里shard key和row key的选取尽量用非递增的字段,尽量用分布均衡的字段,因为分片都是根据范围来选择对应的存取se...
MongoDB Aggregation
MapReduce可以在分片上执行操作,分片集合可以作为输入或者输出。使用分片集合作为MapReduce输入源,mongos将作业并行派发到各个分片。mongos会等待所有的作业完成。如果MapReduce的out字段有分片值,MongoDB使用_id字段作为分片的依据。作为一个分片集合输出:在操作的过程中,mapreduce有很多锁:相关 练习教程 ...
MongoDB应用1——日志分析
同样,用户还可以使用MongoDB的aggregation、mapreduce框架来做一些更复杂的查询分析,在使用时应该尽量建立合理的索引以提升查询效率。当写日志的服务节点越来越多时,日志存储的服务需要保证可扩展的日志写入能力以及海量的日志存储能力,这时就需要使用MongoDB sharding来扩展,将日志数据分散存储到多个shard,...
如何实现mongodb中的sum汇总操作?
MongoDB的MapReduce功能通过数据库命令来调用。Map和Reduce函数在前面章节里已经使用JavaScript实现。下面是执行MapReduce函数的语法。db.runCommand({ mapreduce : <collection>,map : <mapfunction>,reduce : <reducefunction>[, query : <query filter object>][, sort : <sorts the input objects using this ...
为什么MongoDB适合大数据的存储
MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。根据官方网站的描述,Mongo适合用于以下场景:◆网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。◆缓存:由于性能很高...
谈谈redis,memcache,mongodb的区别和具体应用场景
mongoDB 内置了数据分析的功能(mapreduce),其他不支持 8、应用场景 redis:数据量较小的更性能操作和运算上 memcache:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写 少,对于数据量比较大,可以采用 sharding)MongoDB:主要解决海量数据的访问效率问题。表格比较:memcache redis...
mongodb使用场景是什么?
除此之外,MongoDB 还提供创建基于地理空间的索引的能力。(4)支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。(5)强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。
mongoDB适用什么场合呢?
◆高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。◆用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。自然,MongoDB的使用也会有一些限制,例如它不适合:◆高度事务性的系统:例如银行或会计系统。传统...
如何在Mongodb集合中统计去重之后的数据
发现是可以的,于是对大数据量使用了这种方式看看是否能取出结果,发现不存在length属性,想了想应该跟mongodb的客户端版本有关系吧,还待验证!!!两种方式都不行,于是试了下mapReduce方式,具体如下:然后我们会发现,他会将查询出来的结果输出到一个称为“callerstatis”的结合,如下所示:然后使用db...