如何从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命令。

关于这个问题,我是这样做的

  <%
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);
}
%>

但是它抛出了异常

. lang。UNIXProcess@5a8a7e Errorjava.io.IOException: Cannot run程序"hadoop jar hadoop/Anagram.jarcom.hadoop.examples.anagrams.AnagramJob/user/hadoop-user/testdir/user/hadoop-user/outputdir5677"(在目录/home/hadoop-user/hadoop/bin"): java.io.IOException: error=2, No such文件或目录

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

Try: ./hadoop jar hadoop/Anagram.jar ...

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

这将使它搜索你所在的bin目录

ProcessBuilder接受逗号分隔的参数,而不是post中的整个命令。搜索ProcessBuilder示例

最新更新