2012-02-15 15 views
21

Hadoop map/reduce vs Mongoの組み込みマップ/縮小を使用してMongoDBのマップ/リダクション作業を行う主な違いは何ですか?Hadoop Map/Reduce対組み込みマップ/ Reduce

エンジンはどのように選択すればよいですか? mongodbに格納されたデータを処理する各エンジンの賛否両論は何ですか?

答えて

30

私の答えは、Hadoop MRの知識と経験、Mongo DB MRの学習に基づいています。 違いは以下のとおりです:MongoDBの者がJavaScriptである一方、

  1. のHadoopのMRは、Javaで記述することができます。 は大きな違いが何であるかを参照して、選択の基準を定義しようとすることができます
  2. HadoopのMRはすべてのコアを利用できますが、MongoDBはシングルスレッドです。
  3. Mongo DBはコロケートされていますが、Hadoop MRはデータとコロケートされません。
  4. HadoopのMRは、エンジン/時間の何百万を持っており、出力の巨大なサイズで、多くのコーナーケースに対処することができ、データはスキューなど
  5. のHadoopの上に構築され、カスケード豚、ハイブのような高いレベルのフレームワークがありますが、 MRエンジン。
  6. Hadoop MRは主流であり、多くのコミュニティサポートが利用可能です。

私は選択のための以下の基準を提案することができ、上から:
選択モンゴDB MRあなたは、単純なグループによると、フィルタリングが必要な場合は、マップ間の重いシャッフルを期待して低減しません。言い換えれば - 単純なもの。

複雑な、計算上強烈なMRジョブ(たとえば、回帰計算など)を行う場合は、hadoop MRを選択します。 mapとreduceの間に多くの、または予測できないデータサイズを持つことは、Hadoop MRを示唆しています。

Javaは、特に統計的に、より多くのライブラリを持つ強力な言語です。それは考慮に入れるべきです。

+0

素晴らしい点、ありがとう。 Mongoにデータを保存し、HDFSを使用していないのは大きなボトルネックになると思いますか?私のデータサイズはおよそ10 TBで、高度に構造化されており、私の計算は単純で複雑です。Mongoにデータを保存することは、私たちに多くの利点をもたらしますが、HDFSを使用しないと問題が起こる可能性はありますか? – iCode

+0

ともう1つ質問すれば、単純なM/Rジョブでもハープアウトが高速になると言うのは安全でしょうか? – iCode

+1

私のMongo DBの知識は限られています。私の理解の上、このシステムはランダムアクセスのために作られており、索引付けを中心に構築されています。これはオンラインサービスのために構築されたシステムです。同時に、HDFSはシーケンシャルアクセスのために構築され、重いスキャンとすべてのトレードオフがこの方向で行われます。私はMongoDBのスキャンがうまくいくとは思っていません...このようなデータのサイズでは、難しい質問です。具体的には、Mongo DBのパフォーマンスに影響を与えています。 –

0

私はHadoop MRで多くの経験はありませんが、私の印象はHDFSでしか動作しないため、HDFSですべてのMongoデータを複製する必要があるということです。すべてのデータを複製したいなら、Hadoop MRはMongo MRよりはるかに高速で強力です。

+1

実際はそうではありません。このプロジェクトhttps://github.com/mongodb/mongo-hadoopは、monoデータで直接hadoopを実行するのに役立ちます。 hdfsに移動する必要はありません。 – iCode

+0

Hadoop MRは、javaからアクセスできる任意のデータソースで動作します。 HDFSだけでなく – Marquez

10

MongoDB 2.4の時点でMapReduceジョブはシングルスレッド化されていません。

また、MongoDBでアグリゲートやその他の分析ワークロードを実行するための、より高性能で宣言的な方法については、Aggregation Frameworkを参照してください。

+0

このバグは不一致です:https://jira.mongodb.org/browse/SERVER-463 –

0

項目3は、Hadoopに関しては確かに間違っています。データとのコロケーションを処理することは、Hadoopの基礎の一部です。

関連する問題