2012-06-12 6 views
12

私は、クラウド(MongoLabまたはMongoHQ)でホストされている大きなMongoデータベース(100GB)を持っています。私はいくつかの高価な統計を計算するためにいくつかのMap/Reduceタスクをデータ上で実行したいと考えており、これを達成するための最良のワークフローが何であるか疑問に思っていました。理想的には、AmazonのMap/Reduceサービスを使用して、独自のHadoopクラスタを維持するのではなく、これを実行したいと考えています。MongoからのデータにMap/Reduceを実行する最良の方法は何ですか?

データベースからS3にデータをコピーすることは意味がありますか。次にAmazon Maps/Reduceを実行しますか?または、これを行うためのより良い方法があります。

また、私は頻繁に毎日のようにクエリを実行したいので、S3のデータはMongoのものを反映する必要があります。

どのような示唆/戦争物語が非常に役に立つでしょう。

答えて

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設定は、S3に100GBのデータをコピーするより効率的だと思います。

UPDATE:mongoでmap-reduceを使用した例here

関連する問題