私の答えは、HadoopMRの知識と経験およびMongoDB MRの学習に基づいています。主な違いを確認してから、選択の基準を定義してみましょう。違いは次のとおりです。
- HadoopのMRはJavaで記述できますが、MongoDBのMRはJavaScriptで記述できます。
- HadoopのMRはすべてのコアを利用できますが、MongoDBのMRはシングルスレッドです。
- Hadoop MRはデータと併置されませんが、MongoDBは併置されます。
- Hadoop MRには数百万のエンジン/時間があり、出力のサイズが大きい、データの偏りなど、多くのコーナーケースに対処できます
- Hadoop MRエンジンの上に構築された、Pig、Hive、Cascadingなどのより高いレベルのフレームワークがあります。
- Hadoop MRが主流であり、多くのコミュニティサポートを利用できます。
上記から、次の選択基準を提案できます。
単純なグループ化とフィルタリングが必要な場合は、Mongo DB MRを選択します。マップとリデュースの間で、激しいシャッフルを期待しないでください。言い換えれば、単純なことです。
複雑で計算量の多いMRジョブ(たとえば、いくつかの回帰計算)を実行する場合は、hadoopMRを選択します。 mapとreduceの間に大量の、または予測できないサイズのデータがあることも、HadoopMRを示唆しています。
Javaは、特に統計的なライブラリが多い、より強力な言語です。それを考慮に入れる必要があります。