java - 从 java 执行 hadoop 示例 jar 文件

标签 java linux hadoop jar runtime.exec

我正在 Ubuntu 12.04、Eclipse 3.7 上使用 Hadoop 1.0.3,并正在开发一个 GUI 以使用 Windowbuider Pro 执行 Hadoop 作业。我需要从 GUI 执行包含我的代码的 jar 文件。 我使用了runtime.getruntime.exec()方法并取得了一些成功。然而,虽然它确实执行特定于 DFS 的命令,但它无法执行 .jar 文件,就像与发行版捆绑在一起的 PiEstimator 一样。 我的代码如下:

JButton btnYrhtrdsf = new JButton("Start Daemons");
btnYrhtrdsf.addMouseListener(new MouseAdapter() 
{
    @Override
public void mouseClicked(MouseEvent e) 
    {
    try { //WORKING
    Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/start-dfs.sh");
    Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/start-mapred.sh");
    } 
        catch (IOException e1) {
        e1.printStackTrace();
    }
    }
});
    contentPane.add(btnYrhtrdsf, "16, 10");

    JButton btnMakeDirectory = new JButton("Make Folder in HDFS");
    btnMakeDirectory.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {//WORKING
            try {
                Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/hadoop dfs -mkdir input2");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
    contentPane.add(btnMakeDirectory, "12, 18");

    JButton btnStopDaemons = new JButton("Stop Daemons");
    btnStopDaemons.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            try { //WORKING
                Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/stop-dfs.sh");
                Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/stop-mapred.sh");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
    contentPane.add(btnStopDaemons, "16, 18");

    JButton btnPiestimator = new JButton("PiEstimator");
    btnPiestimator.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            try { //PROBLEM!!!!!
                Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/hadoop jar hadoop-examples-1.0.3.jar pi 2 5");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });
    contentPane.add(btnPiestimator, "14, 26");
}

最佳答案

替换以下行

Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/hadoop jar hadoop-examples-1.0.3.jar pi 2 5");

与:

Runtime.getRuntime().exec("/usr/local/hadoop/hadoop-1.0.3/bin/hadoop jar /usr/local/hadoop/hadoop-1.0.3/hadoop-examples-1.0.3.jar pi 2 5");

关于java - 从 java 执行 hadoop 示例 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15186213/

相关文章:

linux - 编译curl后的路径问题

linux - syslog-ng perl 管道丢弃事件

hadoop - hbase 批量加载中的奇怪行为

java - 我如何确保一段代码只执行一次并且只执行一次。再也不会

java - Servlet 映射 : url-pattern for URLs with trailing slash

linux - sh Linux 中的预期回显截断

hadoop - 无法启动cygwin sshd服务

java - 我可以在Hadoop上运行仅具有映射器类的Java源代码(没有Reducer类的源代码)吗?

java - 更改展开和折叠图像 TreeView JavaFX 2.2

java - 使用 Java 8 按两个字段对对象进行分组