Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java应用程序远程执行Hadoop命令_Java_Eclipse_Ubuntu_Hadoop_Jsch - Fatal编程技术网

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

如何从Java应用程序远程执行Hadoop命令,java,eclipse,ubuntu,hadoop,jsch,Java,Eclipse,Ubuntu,Hadoop,Jsch,嗨,我正在通过Java应用程序远程执行任何hadoop命令,比如“hadoop fs-ls”。我在本地机器上安装了Java应用程序,在虚拟机上安装了Hadoop 首先,我建立一个ssh连接并工作。我还可以通过运行的java代码执行linux命令,但是hadoop命令不运行,它会抛出以下错误。有没有执行hadoop命令的想法 这是我的jsch计划 package com.jsch.test; import java.io.BufferedReader; import java.io.IOExcep

嗨,我正在通过Java应用程序远程执行任何hadoop命令,比如“hadoop fs-ls”。我在本地机器上安装了Java应用程序,在虚拟机上安装了Hadoop

首先,我建立一个ssh连接并工作。我还可以通过运行的java代码执行linux命令,但是hadoop命令不运行,它会抛出以下错误。有没有执行hadoop命令的想法

这是我的jsch计划

package com.jsch.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class Jschtest {

public static void main(String[] args){

String command="hadoop fs -ls /";
try{         
     String host = "192.168.3.197"; //IP address of the remote server
     String user = "user";        // Username of the remote server
     String password = "HDP123!";  // Password of the remote server

     JSch jsch = new JSch();
     Session session = jsch.getSession(user, host, 22);
     Properties config = new Properties();
     config.put("StrictHostKeyChecking", "no");
     session.setConfig(config);;
     session.setPassword(password);
     session.connect();

     Channel channel = session.openChannel("exec");
     ((ChannelExec)channel).setCommand(command);
     channel.setInputStream(null);
     ((ChannelExec)channel).setErrStream(System.err);

     InputStream input = channel.getInputStream();
     channel.connect();

     System.out.println("Channel Connected to machine " + host + " server    
with command: " + command ); 

     try{
         InputStreamReader inputReader = new InputStreamReader(input);
         BufferedReader bufferedReader = new BufferedReader(inputReader);
         String line = null;

         while((line = bufferedReader.readLine()) != null){
             System.out.println(line);
         }
         bufferedReader.close();
         inputReader.close();
     }catch(IOException ex){
         ex.printStackTrace();
     }

     channel.disconnect();
     session.disconnect();
 }catch(Exception ex){
     ex.printStackTrace();
 }




}
}
这是我的错误信息

通道通过命令连接到机器192.168.3.197服务器:hadoop fs-ls/


bash:hadoop:command未找到

如果出现此错误,“bash:hadoop:command未找到”意味着。操作系统无法识别Hadoop


您需要使用hadoop主目录更新“.bashrc”文件

打开您的bashsrc并将hadoop BIN文件夹路径添加到文件中的path变量中。 运行
source~/.bashrc
命令

或者,可以对命令变量进行以下更改:

command = usr/local/hadoop/bin/hadoop fs -ls