Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。
1.文档编写目的
Fayson在前面的文章《Hue中使用Oozie创建Shell工作流在脚本中切换不同用户》,里面介绍了Shell Action的创建,在文中我们相应的Shell脚本是放在每个Oozie作业对应的WorkSpace的lib目录下。对于一些对于所有用于都公用的Shell脚本可能放在HDFS的公共目录下,那这时创建Shell Action需要注意些什么呢?本篇文章Fayson主要介绍在Hue中创建Shell Action指定工作空间外的Shell脚本。
- 测试环境
1.RedHat7.2
2.CM和CDH版本为5.15.0
2.测试环境准备
1.准备测试用的Shell脚本,内容如下:
#!/bin/bash
cd ~
ls
2.将准备好的Shell脚本put到HDFS上
[root@cdh2 disk1]# hadoop fs -mkdir -p /oozie/common/shell
[root@cdh2 disk1]# hadoop fs -put test.sh /oozie/common/shell
[root@cdh2 disk1]# hadoop fs -ls /oozie/common/shell
3.Hue创建Shell Action
1.登录Hue进入WorkFlow创建界面
2.点击“Add”添加Shell脚本的名称,在Shell Action中指定FILES参数
3.选择test.sh脚本在HDFS上存储的公共路径
到此完成了Shell Action工作流的创建,保存运行吧。
4.测试运行
1.点击右上角的运行图标
2.运行结果显示如下:
5.总结
1.Hue中创建的Oozie WorkFlow默认所有第三方依赖(如: jar、lib及可执行文件等),运行时会默认会找当前WorkFlow的WorkSpace的lib目录下获取。这也是前面Fayson将shell脚本上传至lib目录下作业运行时没有报错的原因。
2.在指定的第三方依赖不在WorkSpace的lib目录下存在时,需要使用FILES参数来进行设置,指定依赖的文件或包所在目录。
3.当然这里将Shell脚本放在HDFS的公共目录页需要考虑这些脚本的访问权限,如果执行用户对该脚本没有读取的权限,同样会导致你的WorkFlow运行失败。
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操