`

idea+maven+ ganymed-ssh2远程调用hadoop程序

阅读更多

这篇博客是采用JAVA SSH2协议实现的,通过在本地远程去调用linux服务器,从而实现运行jar包中的hadoop程序

 

在pom中配置ssh2jar包

 

<!--ssh2架包-->
    <dependency>
      <groupId>ch.ethz.ganymed</groupId>
      <artifactId>ganymed-ssh2</artifactId>
      <version>build210</version>
    </dependency>
  </dependencies>

 

 

在方法里实现调用,并在cmd里写上你要执行的命令,我这里是调用hadoopjar包,并同时把执行成功之后所生成的文件放在输出目录,传入出入和输出路径等等,使用多个命令中间用分号隔开。

 

public class SSh2 {

    private static String processStdout(InputStream in, String charset){
        InputStream    stdout = new StreamGobbler(in);
        StringBuffer buffer = new StringBuffer();;
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset));
            String line=null;
            while((line=br.readLine()) != null){
                buffer.append(line+"\n");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer.toString();
    }

    public void execmd(String inputUrl, String outputUrl, String endpoint, String starttime, String endtime)
    {
        String hostname = "192.168.50.228";
        String username = "hduser";
        String password = "1234567";
        String result="";
        //指明连接主机的IP地址
        Connection conn = new Connection(hostname);
        Session ssh = null;
        try {
            //连接到主机
            conn.connect();
            //使用用户名和密码校验
            boolean isconn = conn.authenticateWithPassword(username, password);
            if(!isconn){
                System.out.println("用户名称或者是密码不正确");
            }else{
                System.out.println("已经连接OK");
                ssh = conn.openSession();
                String cmd="hadoop jar  /usr/hadoop/hadoop-2.6.0/share/hadoop/mapreduce/threePhaseNew.jar  /input/rtu_voltage0001.txt  /output/VoltageBalance21  1000085,1000210,1000328  20160101 20160331;hdfs dfs -get /output/threePhaseVoltageBalance /usr/hadoop/hadoop-2.6.0/bigdata_out";
                //使用多个命令用分号隔开
                ssh.execCommand(cmd);
                //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
                result=processStdout(ssh.getStdout(),"utf-8");
                //如果为得到标准输出为空,说明脚本执行出错了
                if(StringUtils.isBlank(result)){
                    result=processStdout(ssh.getStderr(),"utf-8");
                    System.out.print(result);
                }

            }
            //连接的Session和Connection对象都需要关闭
            ssh.close();
            conn.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


如果出现执行成功却没有文件生成的情况,需要改一下hadoop环境的访问路径的配置


分享到:
评论

相关推荐

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    ganymed-ssh2-build210.jar是Java的一个开源SSH库,它提供了SSH2协议的支持,允许开发者在Java程序中实现安全的远程登录、文件传输等功能。 首先,了解SSH(Secure Shell)协议,它是一种网络协议,用于在不安全的...

    ganymed-ssh2-262.jar

    Ganymed SSH2是一个开源的Java实现,它允许开发者在Java程序中集成SSH功能,从而能够通过SSH协议与远程系统进行交互。 描述中提到的“使用 ganymed-ssh2-262.jar 通过ssh协议链接资源执行脚本命令”表明了这个库的...

    ganymed-ssh2-build210-sources.jar.zip

    下载网站https://repo1.maven.org/maven2/ch/ethz/ganymed/ganymed-ssh2/build210/ 此jar源码文件中包含以下这些类: SCPClient.lass Session.class Connection.clss 等许多文件传输类。 查看源码的方法: 1.把此jar...

    ssh协议依赖jar包:ganymed-ssh2-build

    在实际应用中,Ganymed SSH-2库广泛应用于自动化运维脚本、远程系统管理工具、持续集成/持续部署(CI/CD)流程以及任何需要安全远程访问的Java项目中。由于其强大的功能和易于使用的API,它成为了Java开发者实现SSH...

    ganymed-ssh2 远程连接java实例代码

    Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些都没有依赖任何JCE provider,而且所有这些都包含加密的功能。该资源是java远程连接ssh服务器的实例...

    基于IDEA+Maven+SSM框架+mysql的高并发的商品秒杀项目.zip

    基于IDEA+Maven+SSM框架+mysql的高并发的商品秒杀项目.zip基于IDEA+Maven+SSM框架+mysql的高并发的商品秒杀项目.zip基于IDEA+Maven+SSM框架+mysql的高并发的商品秒杀项目.zip基于IDEA+Maven+SSM框架+mysql的高并发的...

    idea+maven+tomcat实现登录案例源代码.zip

    标题中的"idea+maven+tomcat实现登录案例源代码"表明这是一个使用IntelliJ IDEA集成开发环境(IDE),Maven构建工具以及Tomcat服务器来实现的登录功能的示例项目。这个项目的主要目的是通过代码展示如何在Java Web...

    基于idea + springboot + maven + mybatis 开发的拍卖行系统

    基于idea + springboot + maven + mybatis 开发的拍卖行系统 项目经过严格测试,确保可以运行! 基于idea + springboot + maven + mybatis 开发的拍卖行系统 项目经过严格测试,确保可以运行! 基于idea + ...

    SSH+Extjs开发视频教程-基于SSH+Maven+Extjs4+MySQL技术实战开发CRM客.doc

    SSH+Extjs开发视频教程-基于SSH+Maven+Extjs4+MySQL技术实战开发CRM客.doc

    Maven3.6.3安装与配置以及IDEA2022.2.3部署Maven的教程

    通过上述步骤,您可以顺利地在本地环境中安装和配置 Maven 3.6.3,并将其集成到 IntelliJ IDEA 2022.2.3 中。这为自动化构建和管理 Java 项目的依赖提供了强大的支持。Maven 通过统一的生命周期模型、插件机制以及对...

    Java+IDEA+Maven混淆打包

    本教程将详细讲解如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包,确保代码的安全性并提高可维护性。 首先,让我们了解一下涉及的工具和技术: 1. **Java**: 一种广泛使用的面向对象的编程语言,用于构建跨...

    spark-assembly-1.6.1-hadoop2.6.0.jar

    spark-assembly-1.6.1-hadoop2.6.0.jar,欢迎下载,,,,,,,,,,,,,,,,,,,,

    vue+maven+ssh前后端分离的网上花店系统

    项目描述 以前的一个学长让我帮着做的一个项目,vue花店,适合做手机端商城,需要Vue商城的,可以下载下去进行二开。...vue的启动方式,我在前一个vue点餐模板中说过。在此不叙述。这里只上传后台逻辑功能...vue+maven+ssh

    Java+IDEA+maven混淆打包

    本教程将详细介绍如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包的步骤,确保整个过程顺利且有效。 首先,我们需要了解Maven,它是一个强大的项目管理和依赖管理工具。通过在`pom.xml`文件中配置,我们可以...

    SpringMVC+baties+idea+maven整合-集成一系列工具及功能

    2.sitemesh3: 3.mybaties 自动生成sql文件 entity实体 mapper映射类 4.redis 缓存 5.spring MVC 拦截器的使用 6.使用json返回到前端 7.psring MVC加载静态资源: 8.java实现execl导出 9.spring MVC直接执行sql语句:

    springmvc+spring+mybatis+Maven+mysql环境搭建源码

    SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,而Maven作为项目构建工具,负责管理和构建项目依赖。本文将详细介绍如何使用这些技术搭建一个完整的开发环境,并运行源码。 首先,让...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...

    基于SpringMVC+Spring+HBase+Maven搭建的Hadoop分布式云盘系统.zip

    这是一个基于Java技术栈,利用SpringMVC、Spring、HBase和Maven构建的Hadoop分布式云盘系统的项目。该项目旨在实现一个高效的、可扩展的云存储解决方案,利用Hadoop的分布式特性来处理大规模数据存储需求。 首先,...

    IDEA+MAVEN学习

    IDEA+MAVEN学习

    Idea + Maven + Lombok配置

    Lombok plugin简单介绍,以及在idea+maven的环境下引入使用

Global site tag (gtag.js) - Google Analytics