oozie是一个开源的比较牛叉的工作流调度工具,尤其是在管理hadoop工作流程方面,类似于java的quartz。记得,我去年刚用hadoop的时候,把所有的工作流程都组织在shell中,虽然写起来比较方便,但是不便于维护及管理,oozie的强大之处就在于他强大的工作流程管理方面,他提供了一个web管理工具,你可以非常直观的通过一个网页来管理和监视你的工作流程的配置、组织关系及运行情况。我在去年写过一篇关于oozie安装的一篇文章,当时介绍的oozie的版本是2.3.2,hadoop版本是0.20.2。现在由于业务原因升级了版本,毕竟之前的版本太老了,好多新版的hadoop工具都无法兼容,比如pig 0.12和hive 0.13版本。虽然,升级后的还是hadoop 1系列,但现在可以使用比较新的hadoop工具了。(ps:如hadoop由0.20.2升级到了1.2.1,pig由0.8升级到0.12,hive由0.7升级到0.13,sqoop由1.3.0升级到了1.4.4)。好了,废话不说了,开始安装吧!
一、在安装oozie-3.3.2时,请确保你已经安装了如下工具:
(1).jdk(1.6版本及以上)、
(2.)mysql数据库(可选,如果不用指定数据库默认使用oozie自带的derby数据库。当然其他的数据库也可以,比如 postgresql)、
(3).maven(3.2版本及以上)、
(4). tomcat(可选,如不安装默认使用oozie自带的tomcat)、
(5).ext-2.2.zip(ExtJS是一种功能强大的ajax框架,具体介绍可以参考:http://blog.youkuaiyun.com/zhu_xun/article/details/18448061)
二、安装
1.下载oozie
可以使用wget工具下载:wget http://archive.apache.org/dist/oozie/3.3.2/oozie-3.3.2.tar.gz。
ps:该文件就1M,下载很快的。
2.解压
tar -zxvf oozie-3.3.2.tar.gz
3.用maven编译该工程生成目标安装包:
执行bin/mkdistro.sh -DskipTests
ps:要加上-DskipTests跳过测试,否则会build failed
这个过程或许会很漫长,用过maven的朋友都有这个体会,在该过程中,需要不断地从网络下载大量的相关文件(jar),这个倒不要紧,也就一两百兆,关键是在我国从老外的maven服务器下载东西是异常的慢啊。你可以吃个饭或打打游戏,也许过3个小时就好了,也许。。。。
PS:最好晚上执行这个过程,如果你还是嫌时间太长,你可以从网上下载人家编译好的安装包(由于csdn上次文件大小限制,本人无法上传,请谅解)。
如果过程顺利的话,会在distro目录下生成一个oozie-3.3.2-distro.tar.gz文件,这个文件及时我们最终需要的安装包。
PS:你可以把之前的文件都删掉了,有了oozie-3.3.2-distro.tar.gz就够了。
4.解压oozie-3.3.2-distro.tar.gz文件:
5.配置OOZIE_HOME环境变量
6.下载ExtJS并将该文件放在OOZIE_HOME/下:
cd $OOZIE_HOME;wget http://extjs.com/deploy/ext-2.2.zip
7.在OOZIE_HOME目录下建立libext目录并将hadoop相关的jar库文件拷贝到libext下面,我使用的是Hadoop 1.2.1版本:
mkdir libext;
cp $HADOOP_HOME/hadoop-*.jar libext/;
cp $HADOOP_HOME/lib/*.jar ./libext/
8.生成war包:
bin/oozie-setup.sh -extjs ext-2.2.zip
执行成功后就会在$OOZIE_HOME/oozie-server/webapps目录下生成oozie.war文件。
9.修改conf/oozie-site.xml配置文件:
10.如果不想使用oozie自带的derby数据库,而是使用自己指定的数据库,可以继续修改配置文件onf/oozie-site.xml,进行如下修改:
<property> <name>oozie.service.JPAService.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> <description> JDBC driver class. </description> </property> <property> <name>oozie.service.JPAService.jdbc.url</name> <value>jdbc:mysql://localhost:3306/oozie</value> <description> JDBC URL. </description> </property> <property> <name>oozie.service.JPAService.jdbc.username</name> <value>shirdrn</value> <description> DB user name. </description> </property> <property> <name>oozie.service.JPAService.jdbc.password</name> <value>0o21e</value> <description> DB user password. </description> </property>11.如果没有安装tomcat,oozie默认使用自带的tomcat
12.修改hadoop配置文件,整合oozie和hadoop:
<!-- 因使用oozie,故添加如下配置-->
<property>
<name>hadoop.proxyuser.zhu.hosts</name> <!-- zhu表示运行oozie的用户-->
<value>localhost</value>
</property>
<property>
<name>hadoop.proxyuser.zhu.groups</name>
<value>zhu</value> <!-- zhu表示zhu用户所在的组(呵呵,组合用户都是zhu)-->
</property>
13.启动oozie:
oozied.sh start或者oozie-start.sh