两部分:如何从 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();
    }

希望对您有所帮助。