您好我正在通过远程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");
}
有什么想法吗?