远程从Java应用程序执行Hadoop命令

时间:2015-06-05 09:55:52

标签: java linux shell hadoop

您好我正在通过远程Java应用程序执行任何hadoop命令,例如“hadoop fs -ls”。 我的本地计算机上有我的Java应用程序,虚拟机中有Hadoop。

首先,我建立一个ssh连接并工作。 我也可以通过java代码执行linux命令,但hadoop命令不显示任何内容。

public static void testCommandJsch() throws IOException, JSchException{
    JSch jsch = new JSch();
    Session session = jsch.getSession(user, host, port);
    session.setPassword(pass);
    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();
    ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
    InputStream in = channelExec.getInputStream();
    channelExec.setCommand("hadoop fs -ls /user");
    channelExec.connect();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String linea = null;
    int index = 0;
    while ((linea = reader.readLine()) != null) {
        System.out.println(++index + " : " + linea);
    }
    channelExec.disconnect();
    session.disconnect();
    System.out.println("------ FIN");
}

有什么想法吗?

0 个答案:

没有答案