1

Hadoop プログラムを実行するには、使用するコマンドは次のとおりです。

hadoop/bin/hadoop jar hadoop/Anagram.jar com.hadoop.examples.anagrams.AnagramJob /user/hadoop-user/testdir /user/hadoop-user/outputdir

PWDから。

このコマンドは、APACHE TOMCAT 7.0 でホストされている JSP ページから実行する必要があります。JSP で Linux コマンドを実行するには。

out.println(Runtime.getRuntime().exec("mkdir /tmp/testdirectory"));

その正常に動作します。しかし、この Hadoop コマンドを実行する必要があります。

この質問を参照して、私はこのようにしました

  <%
try{

out.println(Runtime.getRuntime().exec("start-all.sh"));
ProcessBuilder pb = new ProcessBuilder("hadoop jar hadoop/Anagram.jar com.hadoop.examples.anagrams.AnagramJob /user/hadoop-user/testdir /user/hadoop-user/outputdir5677");
pb.directory(new File("/home/hadoop-user/hadoop/bin/"));
Process p = pb.start();

}
catch(Exception e)
{ out.println("Error"+e);
}
%>

しかし、それは例外をスローしています

java.lang.UNIXProcess@5a8a7e エラーjava.io.IOException: プログラム "hadoop jar hadoop/Anagram.jar com.hadoop.examples.anagrams.AnagramJob /user/hadoop-user/testdir /user/hadoop-user/outputdir5677" を実行できません(ディレクトリ「/home/hadoop-user/hadoop/bin」内): java.io.IOException: エラー=2、そのようなファイルまたはディレクトリはありません

このように使用すると、どうすれば問題を解決できますか。このコマンドを実行する必要があります。しかし、この問題はパスに関連しています。:(どんな助けでも大歓迎です!!

4

2 に答える 2

1

試す:./hadoop jar hadoop/Anagram.jar ...

使用されている PATH に、「.」または現在のディレクトリが含まれていない可能性があります。

これにより、現在の bin ディレクトリが検索されます。

于 2013-03-13T03:57:21.083 に答える
0

ProcessBuilder は、post のようにコマンド全体ではなく、コンマ区切りの引数を取ります。ProcessBuilder の例を検索する

于 2013-05-08T13:15:36.927 に答える