偶然的机会,去面试的时候听面试官讲他们的调度系统是基于hue+oozie,以前一直没有接触过,今天趁有空,尝试一下oozie
1.环境说明
- cat /etc/issue CentOS release 6.2 (Final)
- hadoop-2.2.0
- oozie-4.3.0
- jdk 1.7.0_45
- apache-maven-3.0.5
还需要说明的是,oozie 本身 apache 只提供源码,需要自己编译,编译需要的软件在官方有说明:
Unix box (tested on Mac OS X and Linux) Java JDK 1.6+ Maven 3.0.1+ Hadoop 0.20.2+ Pig 0.7+
我这里在安装时并没有安装pig也能成功编译。
2.安装步骤
1.maven 安装
2.oozie 安装
git clone
编译:
bin/mkdistro.sh -DskipTests
编译后的文件在distro/target
文件夹内,我这里的文件名为oozie-4.3.0-SNAPSHOT-distro.tar.gz
3. 安装oozie server
经过上面的编译,我们得到了二进制版的oozie,下面就可以部署server了,由此可见oozie使用的BS模式。
解压oozie-4.1.0-distro.tar.gz
这个编译后的文件,进入该目录,创建文件夹libext
tar -xvf oozie-4.3.0-SNAPSHOT-distro.tar.gz cd cd oozie-4.3.0-SNAPSHOT mkdir libext
oozie server 需要用到一个js库,但是该js库官方给的链接已经失效了,有个大侠废了好大劲在网上找了个,传到了csdn上,大家下载后把ext-2.2.zip
这个文件放的libext文件夹里。
然后,把hadoop的一些jar把也放到这个libext文件夹内,大家可参考下面这个命令
cp ${HADOOP_HOME}/share/hadoop/*/*.jar libext/ cp ${HADOOP_HOME}/share/hadoop/*/lib/*.jar libext/
这里有个大坑,oozie server默认使用tomcat 6.0.41
,而hadoop也有内置的server,如果按照上面两个命令把hadoop依赖的jar包都拷贝过去,有可能
出现冲突,这两个server使用的servlet、jsp版本很可能不一样。
这里需要把这几个jar包删除,不要放到libext中
rm jasper-compiler-5.5.23.jar rm jasper-runtime-5.5.23.jar rm jsp-api-2.1.jar
oozie server还需要依赖个数据库,我这里用的是常用的postgres,所以需要把postgres的驱动jar包也放的libext中。
然后修改conf/oozie-site.xml
这个配置文件
<property> <name>oozie.service.JPAService.create.db.schema</name> <value>true</value> </property> <property> <name>oozie.service.JPAService.jdbc.driver</name> <value>org.postgresql.Driver</value> </property> <property> <name>oozie.service.JPAService.jdbc.url</name> <value>jdbc:postgresql://l-tdata2.tkt.cn6.qunar.com/oozie?createDatabaseIfNotExist=true</value> </property> <property> <name>oozie.service.JPAService.jdbc.username</name> <value>**</value> </property> <property> <name>oozie.service.JPAService.jdbc.password</name> <value>**</value> </property> <property> <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> <value>*=/home/q/hadoop/hadoop-2.2.0/etc/hadoop</value> </property>
上面的配置中,指定了hadoop配置文件位置:*=
/home/q/hadoop/hadoop-2.2.0/etc/hadoop,这里的*=
不能少,你根据实际情况修改你的hadoop路径即可。
好,上面的步骤完成后,就可以生产server的war包了:
bin/oozie-setup.sh prepare-war
bin/oozie-setup.sh db create -run -sqlfile oozie.sql
执行完后,会在当前目录下生成 oozie.sql文件,同时初始化oozie的db环境。oozie.sql文件是oozie执行数据库的脚本。可以用于以后初始化,或者更新用。
最后,激动人心的时候就要到了,根据上面伪装功能的配置,我用oozie用户开启server:
bin/oozied.sh start