hue-oozie跨环境迁移的一种方法实践

hue-oozie跨环境迁移的一种方法实践

    • @[TOC](hue-oozie跨环境迁移的一种方法实践)
    • 写在前面
    • 遇见问题
    • 操作步骤
          • `1.hue导出文档,替换成新环境的值。`
          • `2.新环境中导入json文件`
          • `3.hue中压缩oozie工作区目录及文件,导出,解压缩,根据需要替换所有文件的ssh目标内容`
    • 最后

--------------------------------------------------------------莫莫绵来了-----------------------------------------------------------

写在前面

  1. 使用CDH 5.16+ oozie 5.1.0 HUE 3.0+
  2. 上一篇文章ozie中管理datax脚本方法实践
  3. 这里的跨环境迁移指是从开发到测试到预发布到生产这种CI/CD,不是从oozie迁移到其它框架。

遇见问题

   当我兴高采烈的在hue中完成了dev的几十个oozie-job的工作之后,就开始思考如何迁移到其他环境。光是建立这些任务我就耗费了3个小时+,从dev、test、pre、prod。一共四个环境,再加上还有其它项目也用这个。这。。。。。。我陷入了沉思。不行,必须要有一个一劳永逸的方法。于是我查找了很多资料。结果是----毫无收获。找寻步骤如下:

  1. oozie官网提供的方法是使用java编写代码维护生成所有的oozie使用的xml及properties文件。然后使用oozie-cli来维护。可是我使用的是hue,这种方法确实可以让oozie工作,但是我在hue上看不到呀。
  2. 于是我想到必须使用hue,然后我有搜索了hue文档的一些迁移方法,但都不是我想要的。我在想大家都没有遇到这种问题吗?难不成我的搜索方式不对?难道很少人用oozie?难道根本没人用,大家只是入个门就完了?难道大家觉得太简单了没必要写?我枯了。emmmmm。最终我决定自己研究。
  3. 我发现hue的文档有导入导出的功能,尝试了一下,确实可以使用。但是导出的文件里很多数据需要修改,这不是问题,接着我又发现尽管文档导入到了新环境,但是没有oozie的xml文件。于是我必须把dev环境的所有工作区hdfs里的文件压缩后导出来,再导入新环境hdfs,再解压,我又发现hue里可以完整操作以上所有流程,nice。替换文本又祭出一大杀器:sed命令最终完成了所有环境的迁移工作。太开心了。

下面说下整个操作步骤

操作步骤

1.hue导出文档,替换成新环境的值。

    hue的左边栏打开文档,这里记录了hue管理的所有文档,然后右上三个点【导入】【导出】功能。点击导出即可导出json文件。
    因为我们要跨环境迁移,因此这个json文件有很多需要修改的地方,比如各个环境的ssh地址不一样。需要批量替换里面的内容。然后也需要把所有的parent_directory值更换为新环境的值。新环境的这个值可以在新环境自己创建一个文件,导出后看文件里的parent_directory是啥,就是它了。然后找个文本编辑器把json文件中的所有这个值替换掉即可。
    至于保存的路径deployment_dir\": \"/user/hue/oozie/workspaces/hue-oozie-1648539302.28可以不用替换,后面会把目录和文件一起迁移过去。

这里文档的导入功能就实现了hue数据库的各个表的数据更新,一开始我想直接迁移hue数据表,但是考虑到可能有问题就没采用这种方法了。

2.新环境中导入json文件

这步很简单,直接到新环境把上面处理好的json文件导入到hue即可。

3.hue中压缩oozie工作区目录及文件,导出,解压缩,根据需要替换所有文件的ssh目标内容

    接着我们需要把文档对应的工作区也迁移过去,先进入旧环境hue的文件,这里面是通过hue来访问hdfs的目录,然后进入oozie的工作区目录,一般默认是:/user/hue/oozie/workspaces,选中需要的目录,点击压缩即可,会得到一个zip文件,接着下载导出待用.
hue-oozie跨环境迁移的一种方法实践_第1张图片
hue-oozie跨环境迁移的一种方法实践_第2张图片
    然后我们需要在linux上把zip文件解压,使用sed命令替换之前的ssh目标节点(因为我的job都是ssh操作,所以唯一需要替换的就是ssh到的节点啦,至于脚本的维护是一起就做好的工作,这里就不用动了),再压缩,导入新环境的hdfs。再从hue上执行解压操作完成解压。

# 把当前目录下的所有目录里的.xml文件替换datax@xxx为datax@fff
sed -i 's/datax@xxx/datax@fff/g' `find ./*/ -name "*.xml"`

最后再在hdfs里解压就好啦。
hue-oozie跨环境迁移的一种方法实践_第3张图片
    接着就可以在hue中操作下workflow、coord的各个功能,看看基本没啥问题就ok啦。

最后

    尽管说起来很简单,但是探寻方法的过程还是充满了曲折。各种hue的解压缩失败,直接报个错Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]然后发现是自己在windows使用7z压缩有问题,可能是压缩算法不一样导致的。最后能圆满完成还是可喜可贺。

--------------------------------------------------------------莫莫绵走了-----------------------------------------------------------


水平有限,如果你觉得上述有任何疑问、不足、错误的地方,欢迎在评论区指正。

你可能感兴趣的:(大数据,大数据,oozie,hue,环境迁移,CI/CD)