对Mongo的数据运行Map/Reduce内容的最佳方法是什么



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

将数据

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

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

任何建议/战争故事都会超级有帮助。

Amazon S3

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

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

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

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

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

更新:在这里使用map-reduce和mongo的示例。

相关内容

  • 没有找到相关文章

最新更新