gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:32:05 31 4
gpt4 key购买 nike

嗨,我正在尝试通过 Java 应用程序远程执行任何 hadoop 命令,例如“hadoop fs -ls”。我在本地机器上有我的 Java 应用程序,在 VM 中有 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 服务器的 channel :hadoop fs -ls/

bash:hadoop:找不到命令

最佳答案

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

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

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

关于java - 如何从 Java 应用程序远程执行 Hadoop 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865931/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com