前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0535-5.15.0-Oozie中创建Ssh Action指定ssh端口号

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

作者头像
Fayson
发布2019-11-27 18:41:40
1.5K0
发布2019-11-27 18:41:40
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1

文档编写目的

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

  • 测试环境

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端口号等其他参数。

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

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

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

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

3

编译修复代码并打包

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

代码地址如下:

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

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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解压到指定目录下

代码语言:javascript
复制
[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包原有的类

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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中增加如下配置

代码语言:javascript
复制
<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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档