12

クラウド(MongoLabまたはMongoHQ)でホストされている大規模なMongoデータベース(100GB)があります。データに対していくつかのMap/Reduceタスクを実行して、高価な統計を計算したいと思います。これを実行するための最適なワークフローは何かと考えていました。理想的には、AmazonのMap / Reduceサービスを使用して、独自のHadoopクラスターを維持する代わりにこれを実行したいと思います。

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

また、さらに先に進むと、毎日のように頻繁にクエリを実行したい場合があるため、S3のデータは、Mongoのデータを反映する必要があります。これにより、事態が複雑になりますか?

どんな提案/戦争の話も非常に役に立ちます。

4

1 に答える 1

9

Amazon S3は、S3にデータを出し入れするためのS3DistCpと呼ばれるユーティリティを提供します。これは、AmazonのEMR製品を実行していて、独自のクラスターをホストしたり、データを保存するためにインスタンスを使い果たしたりしたくない場合によく使用されます。S3はすべてのデータを保存でき、EMRはS3との間でデータの読み取り/書き込みを行うことができます。

ただし、100 GBの転送には時間がかかり、これを複数回実行する場合(つまり、1回限りのバッチジョブを超える場合)、処理の重大なボトルネックになります(特に、データの増加が予想される場合)。

S3を使用する必要がないようです。Mongoは、MongoDBの上にマップリデュースジョブを実装するためのアダプターを実装しました。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 に答える