网站首页 > 开源技术 正文
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端口号等其他参数。
经分析现有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版本源码
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包
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
猜你喜欢
- 2024-10-09 大数据开发岗位的职业规划,你知道吗?
- 2024-10-09 大数据开发和大数据分析有什么区别吗?
- 2024-10-09 大数据分析工程师入门11-Hue&Zeppelin
- 2024-10-09 Hadoop的任务调度器:Azkaban快速入门
- 2024-10-09 0207-使用Oozie API接口向Kerberos环境的CDH集群提交Shell作业
- 2024-10-09 0782-5.16.2-Oozie配置Sqoop定时任务
- 2024-10-09 如何在HUE上创建oozie Coordinator定时任务流
- 2024-10-09 如何在HUE上通过oozie调用Pig工作流
- 2024-10-09 0475-如何统一Hue和Oozie的时区(0475-如何统一hue和oozie的时区使用)
- 2024-10-09 Hadoop2.7.3上安装oozie-4.3.1(hadoop3.1.3安装详细步骤)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)