7

マッパー内で、HDFSの外部のワーカーノードにインストールされている外部ソフトウェアを呼び出したいと思います。これは可能ですか?これを行うための最良の方法は何ですか?

これによりMapReduceの利点/スケーラビリティの一部が失われる可能性があることは理解していますが、HDFS内で対話し、マッパー内でコンパイル/インストールされた外部ソフトウェアコードを呼び出してデータを処理したいと思います。

4

2 に答える 2

5

マッパー(およびレデューサー)は、ボックス上の他のプロセスと同様です。TaskTrackerユーザーが実行可能ファイルを実行する権限を持っている限り、問題はありません。外部プロセスを呼び出す方法はいくつかありますが、すでにJavaを使用しているため、ProcessBuilderを開始するのが論理的な場所のようです。

編集:Hadoopにはこの目的のために明示的にクラスがあることがわかりました:http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/util/Shell.html

于 2011-09-03T23:35:48.120 に答える
0

これは確かに実行可能です。Hadoopストリーミングを使用するのが最適な場合があります。それがそのウェブサイトで言うように:

Hadoopストリーミングは、Hadoopディストリビューションに付属するユーティリティです。このユーティリティを使用すると、実行可能ファイルまたはスクリプトをマッパーおよび/またはレデューサーとして使用して、map/reduceジョブを作成および実行できます。

私はHadoopストリーミング内の外部コードから始める傾向があります。言語によっては、ストリーミングでの使用方法の良い例がたくさんあるでしょう。選択した言語に入ると、通常、必要に応じてデータを別のプログラムにパイプアウトできます。さまざまな言語のプログラムのいくつかのレイヤーを、通常のLinuxボックスで実行した場合よりも、Hadoopストリーミングで外側のレイヤーを機能させるだけでなく、追加の作業なしでうまく再生できました。

于 2011-09-05T03:07:06.903 に答える