MongoDB用に作成されたmap-reduceアルゴリズムを後でHadoopに移植できますか?


11

私たちの会社には、多くの非構造化データを含むMongoDBデータベースがあり、その上でマップ削減アルゴリズムを実行して、レポートやその他の分析を生成する必要があります。必要な分析を実装するために選択する2つの方法があります。

  1. 1つのアプローチは、MongoDBからHadoopクラスターにデータを抽出し、Hadoopプラットフォームで完全に分析を行うことです。ただし、これには、プラットフォーム(ソフトウェアとハ​​ードウェア)の準備と、Hadoopで作業し、そのためのマップ縮小タスクを作成するようにチームを教育するために、かなりの投資が必要です。

  2. 別のアプローチは、map-reduceアルゴリズムの設計に私たちの努力を注ぎ、MongoDB map-reduce機能でアルゴリズムを実行することです。このようにして、レポートを生成できる最終システムの初期プロトタイプを作成できます。MongoDBのmap-reduce機能はHadoopに比べてはるかに遅いことは知っていますが、現在のところ、データはそれほど大きくないため、少なくとも次の6か月間はボトルネックになりません。

問題は、2番目のアプローチを使用してMongoDBのアルゴリズムを作成することで、それらを後で必要な変更とアルゴリズムの再設計をほとんど行わずにHadoopに移植できるかどうかです。MongoDBはJavaScriptをサポートするだけですが、プログラミング言語の違いは簡単に処理できます。しかし、MongoDBとHadoopのmap-reduceモデルには、Hadoopへの移植のためにアルゴリズムを大幅に再設計する必要がある根本的な違いはありますか?


回答:


4

mongoだけを使用してプロトタイプを作成した場合、最後に間違いなく翻訳タスクがあります。

mongodbでMapReduceタスクを実行すると、データソースと構造が組み込まれています。最終的にhadoopに変換すると、データ構造が同じに見えない場合があります。mongodb-hadoopコネクタを利用して、hadoop内から直接mongoデータにアクセスすることもできますが、思ったほど簡単ではありません。プロトタイプIMOを配置すると、変換を最も最適に実行する方法を正確に理解する時間が簡単に正当化されます。

mapreduce関数を変換する必要がありますが、基本的な疑似コードは両方のシステムに適用できるはずです。MongoDBでは、Javaを使用して実行できないことや、Javaを使用する場合よりもはるかに複雑なことはありません。


5

JavaでプログラミングせずにHadoopでマップ削減アルゴリズムを使用できます。これはストリーミングと呼ばれ、Linuxパイピングのように機能します。関数をポートに読み書きできるように移植できると思われる場合は、うまく機能するはずです。ここでのHadoopでPythonで書かれた関数を減らすマップを使用する方法を示します例のブログ記事です。


1
それでも、mongoが処理を行うことになりますが、最終的な解決策ではこの問題を回避する必要があると私は考えています。重要な知識を育てるためにとにかく賛成票を与えます。
Steve Kallestad 14年

4

MongoDB-Hadoop 接続を作成することもできます。


投稿ありがとうございますが、リンクされたソリューションの全体的な説明をここに含めることができますか?リンクには質問への回答がある場合がありますが、リンクのみの回答はお勧めしません。
ルーベンス2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.