12

我有一个托管在云(MongoLab 或 MongoHQ)中的大型 Mongo 数据库(100GB)。我想对数据运行一些 Map/Reduce 任务来计算一些昂贵的统计数据,并且想知道完成这项工作的最佳工作流程是什么。理想情况下,我想使用 Amazon 的 Map/Reduce 服务来做到这一点,而不是维护我自己的 Hadoop 集群。

将数据从数据库复制到 S3 是否有意义。然后在上面运行 Amazon Map/Reduce?或者有更好的方法来完成这项工作。

此外,如果再往下走,我可能想像每天一样频繁地运行查询,所以 S3 上的数据需要反映 Mongo 中的内容,这会使事情复杂化吗?

任何建议/战争故事都会非常有帮助。

4

1 回答 1

9

Amazon S3 提供了一个名为 S3DistCp 的实用程序,用于将数据传入和传出 S3。这通常在运行 Amazon 的 EMR 产品并且您不想托管自己的集群或用尽实例来存储数据时使用。S3 可以为您存储所有数据,EMR 可以从 S3 读取/写入数据。

但是,传输 100GB 需要时间,如果您计划多次执行此操作(即不止一次的批处理作业),这将是您处理中的一个重大瓶颈(尤其是在数据预计会增长的情况下)。

看起来您可能不需要使用 S3。Mongo 已经实现了一个适配器来在 MongoDB 上实现 map reduce 作业。http://blog.mongodb.org/post/24610529795/hadoop-streaming-support-for-mongodb

这看起来很吸引人,因为它允许您在 python/js/ruby 中实现 MR。

我认为这种 mongo-hadoop 设置比将 100GB 数据复制到 S3 更有效。

更新:这里使用带有 mongo 的 map-reduce 的示例。

于 2012-06-13T23:12:41.713 回答