2011-09-03 9 views
6

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

MapReduceのメリット/スケーラビリティは、離れているかもしれませんが、私はHDFS内でやり取りして、マッパー内でコンパイル/インストールされた外部ソフトウェアコードを呼び出してデータを処理したいと思います。

答えて

5

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

EDIT:ただのHadoopは、この目的のために、明示的にクラスを持っていることがわかった:http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/util/Shell.html

+0

追加するだけ:シェルはパッケージで表示されます。パッケージ内では使用できません。 –

+0

java内のShellクラスは、HDFS外のノード上のプロセスを呼び出しますか? – Joris

+0

@chrisありがとう - それは動作します! TaskTrackerのユーザー権限を設定する方法を知っていますか? – Joris

0

これは確かになんとかです。 Hadoop Streamingで作業するのが最も良いかもしれません。そのウェブサイトに記載されているとおり:

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

私は、Hadoop Streamingの内部で外部コードから始める傾向があります。あなたの言語にもよりますが、ストリーミングでそれを使用する良い例がたくさんあります。ひとたびあなたが選んだ言語の中に入ると、通常は、必要に応じて別のプログラムにデータをパイプすることができます。私は、Hadoop Streamingを使って外部レイヤーを操作するだけでなく、通常のLinuxボックスで実行した場合よりも、別の言語のプログラムをいくつかレイヤーを追加する必要はありません。

+0

リンクが壊れています –

関連する問題