如何从JSP运行Hadoop命令

时间:2013-03-13 03:52:24

标签: java linux jsp hadoop

要运行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命令。

参考this question,我这样做了

  <%
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 Errorjava.io.IOException:无法运行   程序&#34; hadoop jar hadoop / Anagram.jar   com.hadoop.examples.anagrams.AnagramJob / user / hadoop-user / testdir   /用户/ Hadoop的用户/ outputdir5677&#34; (在目录中   &#34; / home / hadoop-user / hadoop / bin&#34;):java.io.IOException:error = 2,没有这样的   文件或目录

当我这样使用的时候 我该如何解决我的问题。我需要运行这个命令。但这个问题与路径有关。 :( 任何帮助将不胜感激!!

2 个答案:

答案 0 :(得分:1)

尝试:./hadoop jar hadoop/Anagram.jar ...

使用的PATH可能不包含“。”或当前目录。

这将使其搜索您所在的bin目录。

答案 1 :(得分:0)

ProcessBuilder采用逗号分隔的参数,而不是像post中那样的整个命令。搜索ProcessBuilder示例