MR工作流引擎oozie扩展与配置

折腾了好久好久好久的oozie,
现在暂时算是能够用起来了。

主要讲两点吧:
一,部署相关
二,运行相关

-----------------------------
一,部署相关
oozie用的版本是oozie-3.1.3-incubating,不知道为什么,从3.0起,oozie不支持sqoopAction和HiveAction了。
为了能够执行这两种Action,对他的jar包进行了些修改。

1,编译HiveAction和SqoopAction相关的类。
一共有四个类:HiveAction.java, HiveMain.java, SqoopAction.java, SqoopMain.java
这四个类是我从cloudera版本oozie-2.3.2-cdh3u2里面拉出来的。
编译方法,没啥特别,就是用oozie3.1.3建立项目,添加这四个类,然后编译,找到这四个类的class文件,然后把这四个类的class文件放到oozie-core-3.1.3.jar对应的路径下。

2,添加相应的xsd文件。
在cloudera的oozie-2.3.2-cdh3u2\src\client\src\main\resources下,
找到hive-action-0.2.xsd和sqoop-action-0.2.xsd,把这两个东西,添加到oozie-client-3.1.3-incubating.jar里面。

3,重新setup oozie。
把修改后的jar包替换原来的jar包,然后重新setup oozie,根据前一篇http://taoo.iteye.com/blog/1518580日志,setup之后,要在lib里面添加相应的jar包。

4,重启oozie。



二,运行相关
1,sharelib的配置
在任何action执行时,会对这个sharelib进行依赖,这个sharelib要放到hdfs上。
oozie提供一个sharelib:oozie-sharelib-3.1.3-incubating.tar.gz。解压即可。
然后,根据hive、pig和sqoop的版本添加相关的jar包。除了这三个工具的jar包外,hive的lib里的jar包还需要添加进去,注意,一定是hive的lib中的jar为版本基准,如果sharelib里面已经有了这个jar包,但是与hive lib中的对应jar包版本不同,一定,一定,一定以hive中lib的版本为准。
对了,相关的jdbc包也要添加进sharelib哦。

2,指定相关配置文件。
特别是hive在运行时,一定要指定hive的配置文件,要不然hive client不知道去哪找metastore呢。
指定方法是,在configuration里面添加:
Xml代码  收藏代码

    <property> 
        <name>oozie.hive.defaults</name> 
        <value>my-hive-default.xml</value> 
    </property> 


其中这个my-hive-default.xml文件就是hive-site.xml,需要放到hdfs上对应的workflow路径下。

其实hive相关的action,比如sqoop的,可能也需要配置这个东西。

你可能感兴趣的:(oozie)