从Mongo运行Map/Reduce数据的最佳方法是什么?

nic*_*ine 12 hadoop mapreduce amazon-s3 mongodb amazon-web-services

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

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

此外,如果进一步下线,我可能想要经常像每天运行查询,所以S3上的数据需要反映Mongo中的内容会使事情变得复杂吗?

任何建议/战争故事都会非常有用.

Gir*_*Rao 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更有效.

更新:这里使用map-reduce和mongo的例子.