0

私は分散システムを書いていますが、それを Hadoop に接続する際に問題に直面しています。これが私の状況です:

1) 3 台のコンピューター (sys1、sys2、sys3) で実行されている分散システムがあります。

2) Sys2 と Sys3 は、2 つの異なる Hadoop クラスターのマスターノードです。これら 2 つの Hadoop クラスターは互いに接続されておらず、それぞれが独立して実行されます。

3) 私の分散システムには 3 つの部分 (p1、p2、p3) があります。

P1 は sys1 に配置され、クライアント (クライアントは別のシステム) から Mappers/Reducer のソース コードを受け取ります。次に、P1 は P2 または P3 に連絡し、マッパー/リデューサーのコードを送信します。

4) 問題は、P2 または P3 が Hadoop でジョブを実行し、結果を P1 に送り返す必要があることです。

私はしばらく Hadoop を使用しており、簡単な mapReduce プログラムを作成し、それを JAR ファイルに変換して Hadoop で実行する方法を知っています。問題は、私の場合、実行中に mapReduce ジョブのソース コードが送信され、それから JAR ファイルを作成できないことです。受け取ったコードから Hadoop ジョブを作成し、Hadoop で実行する必要があります。この問題を解決する方法についてアドバイスや提案をいただければ幸いです。

PS。1 つの解決策は、受信した map/Reduce コードをディスク上のファイルに書き込み、必要なすべてのコマンドを実行して JAR ファイルを作成し、Java コード内から (ランタイム インスタンスを使用して) シェルでジョブを実行することです。 . しかし、私は自分の Java コードからジョブを直接実行できるようにし、上記のソリューションで考えられるすべての問題を経験しないことを好みます。

4

1 に答える 1

1

JavaCompiler APIの使用についてはどうですか? 次に、その場でjarファイルを簡単に作成できます JarOuptputStream

API を説明する素敵なブログ投稿は次の とおりです。 JavaBeat

于 2012-12-18T11:42:35.173 に答える