1.文档编写目的
考虑到服务器的安装,一些系统管理员将服务器的默认SSH端口更改为其他端口。 在这种情况下,在Hue中创建oo zie SSH操作工作流时不能指定服务器的SSH端口号,ssh操作将失败。 本文的Fayson主要介绍Oozie的Ssh Action如何支持端口指定。
的概要1 .源代码分析
2 .编译并打包修复代码
3 .样品的执行和验证
4 .总结
测试环境1.CM和CDH的版本是5.15.0
2.Ssh Action源码分析
CDH 4.1.0版集成了oo zie 4.1.0版。 Fayson通过在GitHub上查找Oozie的代码
359 Github.com/Apache/oo zie/blob/branch-4.1 /酷睿/SRC /主/Java/Org /附件/操作/SSH/SSH
代码中包含Ssh Action的所有逻辑,代码中ssh唯一指定的参数是SSH_COMAND_OPTIONS,受保护,通过设置此变量可以增加ssh端口号等其他参数
对现有oozie进行分析的SshActionExecutor.java代码无法实现指定的ssh端口号的配置,即使SshAction没有像最新的oozie版本那样修复该问题。
看到Fayson在github上提出了关于贡献者指定的ssh端口号的修复版本
359 github.com/Apache/oozie/pull/11,但提交的代码是合并到oo zie中的主要版本。
oozie.action.SSH.command.port参数已添加到代码中,并指定了可以在oozie-site.xml配置文件中设置的ssh端口号。
3.编译修复代码并打包
本地复制GitHub上的贡献者提交的代码
代码地址如下所示。
359 Github.com/Apache/oo zie /拉动/11 /提交/26 DFF BB 07 a2B 65578 E8 FED 634 E2 A4 FF 61 A 6350 # Diff-05854 C4 C 1632 A 781 DD
2 .在git上下载与CDH版本匹配的oozie版本4.1.0的源代码
wget https://千兆以太网
.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
3.回到core目录下,执行如下命令重新编译oozie-core jar包
mvn clean package -Dmaven.test.skip=true编译成功
注意:编译要配置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将第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/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 .6.将重新打包的jar包拷贝至/opt/cloudera/parcels/CDH/jars目录下,替换原有的jar包
注意:需要替换oozie服务所在服务器上的jar包。
4.示例运行及验证
1.登录CM进入oozie服务的配置界面,在oozie-site.xml中增加如下配置
<property> <name>oozie.action.ssh.command.port</name> <value>2222</value> </property>配置完成后重启oozie服务。
2.登录Hue创建一个Ssh Action工作流测试
运行该WorkFlow测试
5.总结
1.Oozie是不支持Ssh Action指定端口的,需要使用github上提交的代码编译使其支持端口号配置。
2.GitHub上提交的代码SshActionExecutor,Fayson做了部分修改,主要是获取配置参数的ConfigurationService调用的地方,可以参考Fayson的GitHub。
GitHub地址:
https://github.com/fayson/cdhproject/tree/master/ooziedemo/sshaction