0
点赞
收藏
分享

微信扫一扫

0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​​https://github.com/fayson/cdhproject​​


提示:代码块部分可以左右滑动查看噢



1

文档编写目的


考虑到服务器的安装,有些系统管理员会将服务器默认的SSH端口修改其它端口,这时在Hue上创建Oozie Ssh Action的WorkFlow时无法指定服务器的SSH端口号,导致Ssh Action执行失败。本篇文章Fayson主要介绍如何让Oozie的Ssh Action支持端口指定。


  • 内容概述

1.源码分析

2.编译修复代码并打包

3.示例运行及验证

4.总结


  • 测试环境

1.CM和CDH版本为5.15.0


2

Ssh Action源码分析


在CDH5.15.0版本中集成Oozie版本为4.1.0,Fayson通过在GitHub上找到Oozie的代码,在

​​https://github.com/apache/oozie/blob/branch-4.1/core/src/main/java/org/apache/oozie/action/ssh/SshActionExecutor.java​​

代码中包含了Ssh Action的所有逻辑,在代码中也可以看到ssh中唯一指定的参数为SSH_COMAND_OPTIONS,改变量为受保护的无法通过设置该变量增加ssh端口号等其他参数。


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache


经分析现有oozie的SshActionExecutor.java的代码(甚至最新的oozie版本一样该SshAction未修复该问题),是无法实现指定ssh端口号配置的。

Fayson在github上有看到有贡献者提交了关于指定ssh端口号的修复版本

​​https://github.com/apache/oozie/pull/11,但提交的代码一直为合并到Oozie的主版本。​​


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_02


在代码中增加了oozie.action.ssh.command.port参数,来指定SSH的端口号,该参数可以在oozie-site.xml配置文件中配置。


3

编译修复代码并打包


1.将GitHub上贡献者提交的代码拷贝至本地


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_03


代码地址如下:

​​https://github.com/apache/oozie/pull/11/commits/26dffbb07a2a9b65578e8fed634e2a4ff61a6350#diff-05854c4c1632a781d1c1554c6039e4e4​​


2.在git上下载与CDH版本一致的oozie4.1.0版本源码


wget https://github.com/apache/oozie/archive/release-4.1.0.tar.gz


将上一步保存的代码替换下载下来的源码中对应目录的SshActionExecutor.java代码目录

/data/disk1/oozie-release-4.1.0/core/src/main/java/org/apache/oozie/action/ssh


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_github_04


3.回到core目录下,执行如下命令重新编译oozie-core jar包


mvn clean package -Dmaven.test.skip=true


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_05


编译成功


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_h5_06


注意:编译要配置Maven和Java环境变量,只需要编译core模块所以进入到core目录下。


4.找到CDH对应版本的oozie-core-4.1.0-cdh5.15.0.jar包,这一步将编译好的SshActionExecutor类打包到oozie-core-4.1.0-cdh5.15.0.jar包中


将oozie-core-4.1.0-cdh5.15.0.jar解压到指定目录下


[root@cdh1 disk1]# mkdir -p oozie-core
[root@cdh1 disk1]# unzip oozie-core-4.1.0-cdh5.15.0.jar -d oozie-core


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_github_07


将第4步通过编译的SshActionExecutor类拷贝至

/data/disk1/oozie-core/org/apache/oozie/action/ssh/覆盖jar包原有的类


[root@cdh1 ssh]# pwd
[root@cdh1 ssh]# cp -r * /data/disk1/oozie-core/org/apache/oozie/action/ssh/


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_h5_08


5.更新了SshActionExecutor类后使用jar命令重新打包为oozie-core-4.1.0-cdh5.15.0.jar


[root@cdh1 ssh]# cd /data/disk1/oozie-core
[root@cdh1 oozie-core]# jar -cvf oozie-core-4.1.0-cdh5.15.0.jar .


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_09


6.将重新打包的jar包拷贝至/opt/cloudera/parcels/CDH/jars目录下,替换原有的jar包


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_github_10


注意:需要替换oozie服务所在服务器上的jar包。


4

示例运行及验证


1.登录CM进入oozie服务的配置界面,在oozie-site.xml中增加如下配置


<property>
<name>oozie.action.ssh.command.port</name>
<value>2222</value>
</property>


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_11


配置完成后重启oozie服务。


2.登录Hue创建一个Ssh Action工作流测试


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_h5_12


运行该WorkFlow测试


0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_13


5

总结


1.Oozie是不支持Ssh Action指定端口的,需要使用github上提交的代码编译使其支持端口号配置。


2.GitHub上提交的代码SshActionExecutor,Fayson做了部分修改,主要是获取配置参数的ConfigurationService调用的地方,可以参考Fayson的GitHub。


GitHub地址:

​​https://github.com/fayson/cdhproject/tree/master/ooziedemo/sshaction​​


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号_apache_14

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操



举报

相关推荐

0 条评论