两部分:如何从 java 程序 运行 'ls' 以及如何告诉风暴集群上的计算机执行特定命令
Two part: How to run 'ls' from a java program and how to tell computers on a storm cluster to execute specific commands
所以用最少的 Java 经验编写测试风暴拓扑,所以我正在以蛮力的方式解决问题。我编写风暴拓扑的经验也很少。
我的集群上有三个主管节点,希望它们中的每一个都在终端中 运行 ls
,将输出汇集到一个文件中,然后 return 将其发送到 nimbus节点。
首先,我如何在终端中将个人计算机编码为 运行 ls
?将输出汇集到一个文件很简单,我很容易理解。我只是不知道如何编写执行终端命令的程序。
其次,我如何告诉我的每个主管节点分别 运行 ls
?
您可以使用以下代码段 运行 shell 中的命令。因此,使用相同的方法在所有主管节点(从外部节点如 nimbus)中使用 ssh
调用特定的 ls
命令。
public String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
希望对您有所帮助。
所以用最少的 Java 经验编写测试风暴拓扑,所以我正在以蛮力的方式解决问题。我编写风暴拓扑的经验也很少。
我的集群上有三个主管节点,希望它们中的每一个都在终端中 运行 ls
,将输出汇集到一个文件中,然后 return 将其发送到 nimbus节点。
首先,我如何在终端中将个人计算机编码为 运行 ls
?将输出汇集到一个文件很简单,我很容易理解。我只是不知道如何编写执行终端命令的程序。
其次,我如何告诉我的每个主管节点分别 运行 ls
?
您可以使用以下代码段 运行 shell 中的命令。因此,使用相同的方法在所有主管节点(从外部节点如 nimbus)中使用 ssh
调用特定的 ls
命令。
public String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
希望对您有所帮助。