【问题标题】:What is the best way to do Big Data queries on Mongo?在 Mongo 上进行大数据查询的最佳方法是什么?
【发布时间】:2012-07-20 06:00:14
【问题描述】:
Mongo 支持 Map/Reduce 查询,但它们似乎不是 Hadoop 意义上的 map reduce(并行运行)。在庞大的 Mongo 数据库上运行查询的最佳方式是什么?我需要将其导出到其他地方吗?
【问题讨论】:
标签:
mongodb
mapreduce
bigdata
【解决方案1】:
根据您具体需要做什么,您的选择(在 Mongo 中时)是:
1) 继续在 Mongo 中使用 map/reduce,但为了 m/r 的目的启动一些辅助节点。这是一种比较简单的并行化 map reduce 的方法。但是有限制,您只能使用“out: inline”选项,因此结果需要为 ~16MB 或更少。这只有在你还没有分片的情况下才真正可行。
2) 查看 2.2 中的 aggregation framework(2.2.0-rc0 已发布,我们发现它在 MongoHQ 中相当稳定)。这在 db 级别上得到了更好的优化,主要是让您远离 janky javascript 引擎,并且是 10gen 添加的更有趣的功能之一。它也可以在分片环境中工作。
对于上述任何一种情况,您都需要确保有足够的 RAM(或速度非常快的磁盘)来保存所有输入数据、中间步骤和结果。否则,您会受到 IO 速度的限制,无法充分利用 CPU。
如果你想跳出 Mongo,你可以试试Mongo Hadoop 适配器。 Hadoop 是一种更好的 map/reduce 方法,它可以让您使用 Mongo 数据作为输入。不过,这在操作上可能很复杂,这意味着要么付出高昂的努力,要么很脆弱。