【问题标题】: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 数据库上运行查询的最佳方式是什么?我需要将其导出到其他地方吗?

【问题讨论】:

  • 您的数据集有多大?你有你需要运行的那种查询的例子吗? Map/Reduce 不是唯一的选择……MongoDB 支持多个 IndexesQuery operators,并且在 2.2 中还有一个 Aggregation Framework

标签: 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 数据作为输入。不过,这在操作上可能很复杂,这意味着要么付出高昂的努力,要么很脆弱。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多