偶然的机会,去面试的时候听面试官讲他们的调度系统是基于hue+oozie,以前一直没有接触过,今天趁有空,尝试一下oozie

1.环境说明

  1. cat /etc/issue  CentOS release 6.2 (Final)
  2. hadoop-2.2.0
  3. oozie-4.3.0
  4. jdk 1.7.0_45
  5. 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

最新文章

  1. var a=b=c=1; 和 var a=1, b=2, c=3; 的区别。
  2. c#反射-动态加载dll简单例子
  3. 深入解析PHP中的(伪)多线程与多进程
  4. jQuery知识点总结(第二天)
  5. PDO处理大批量数据的入库
  6. Connect to a Windows PC from Ubuntu via Remote Desktop Connection
  7. Swift学习笔记十四
  8. 笨方法学python--打印
  9. Enterprise architect 类图加时序图
  10. HTML学记笔记
  11. 4面向对象(OOP)
  12. ORACLE在IMP时候出现数据丢失
  13. bzoj2045
  14. 阅读《7 Series FPGAs GTX/GTH Transceivers User Guide》
  15. MySQL 二进制文件恢复数据基础版本
  16. (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能
  17. 【WinRT】获取 Uri 中的参数(QueryString)键值对
  18. java基础学习总结——开篇
  19. EcmaScript对象克隆之谜
  20. hdu 3613 Best Reward

热门文章

  1. 用servlet进行用户名和密码校验01
  2. 转 crs damon can&#39;t start 2个例子
  3. 获取请求Requst中访问请求的客户端IP
  4. Java - 关于子类父类的向上转型,向下转型
  5. Django跨域解决方法
  6. Oracle PL/SQL编程之过程
  7. c++ 网络编程(三) LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现
  8. JavaScript自适应调整文字大小
  9. Gradient Optimization
  10. .NET 中使用阿里云短信的 API 接口