oozie是hadoop的工作流Scheduler,最新的版本到4.0.1了。试用了下,小坑还蛮多的。
1. 编译
我的主机上跑的是Hadoop 1.1.2,选的是oozie 3.3.0版本,下载源码,解压缩。
首先,要把源码里的javaversion从1.6改成1.7,主机是用jdk1.7。
编译oozie,命令是‘./bin/mkdistro.sh -DskipTests -Dhadoop.version=1.0.1‘,跳过测试,另外,不管Hadoop的版本是多少,只要它是1.x的,就只能是-Dhaoop.version=1.0.1,填其他版本号编译不通过。如果是Hadoop 2.x,只能填‘-Dhadoop.version=2.0.0-alpha‘,填其他版本号编译不通过。
2. 安装
编译结果在oozie-3.3.0/distro/target/oozie-3.3.0-distro/oozie-3.3.0,这个目录有
--------------------
bin lib oozie-core oozie-sharelib-3.3.0.tar.gz
conf libtools oozie-examples.tar.gz oozie.war
docs.zip oozie-client-3.3.0.tar.gz oozie-server release-log.txt
--------------------
把这些文件复制到安装目录/usr/local/lib/oozie-3.3.0,或者其他地方比如我的是~/usr/oozie-3.3.0。以后的操作都是安装目录进行。
3. 配置hadoop
在hadoop的core-site.xml里添加oozie的配置
--------------------
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.[youname].hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.brian.groups</name>
<value>*</value>
</property>
--------------------
把[youname]替换成你的当前用户名。
然后启动Hadoop。
4. 官档提到要把oozie-3.3.0目录下hadooplibs tar.gz解压缩,但如果你的系统已经安装hadoop了,编译的时候不会生成这个文件,这一步可以忽略。
5. 创建oozie-3.3.0/libext目录。下载http://extjs.com/deploy/ext-2.2.zip放到这个目录,不需要解压,再把主机上hadoop-1.1.2的几个主jar文件复制到这个目录,也就是:
---------------------------
hadoop-client-1.1.2.jar hadoop-examples-1.1.2.jar hadoop-test-1.1.2.jar
hadoop-ant-1.1.2.jar hadoop-core-1.1.2.jar hadoop-minicluster-1.1.2.jar hadoop-tools-1.1.2.jar
---------------------------
6. 在oozie-3.3.0目录下,运行‘./bin/oozie-setup.sh‘,执行安装步骤。
7. 在oozie-3.3.0目录下,运行‘./bin/ooziedb.sh create -sqlfile oozie.sql -run‘,创建数据库。
8. 在ooize-3.3.0目录下,运行‘./bin/oozie-start.sh‘,启动oozie。
9. 在ooize-3.3.0目录下,运行‘./bin/oozie admin -oozie
http://localhost:11000/oozie
-status‘,检查oozie是否启动成功,正常情况下,输出值是normal。
10.在ooize-3.3.0目录下,解压缩oozie-sharelib-3.3.0.tar.gz,得到一个目录share,用‘hadoop fs -put share share‘将它放到hdfs上。
11.在ooize-3.3.0目录下,解压缩oozie-examples.tar.gz,得到目录examples。修改examples/apps/mao-reduce/jobproperties文件的前两句,替换成:
------------
nameNode=hdfs://localhost:9000
jobTracker=localhost:9001
------------
这是下一步要运行的demo,修改namenode和jobtracker的配置,默认值不对。
然后将examples目录也put到hdfs上。
12. 在oozie-3.3.0目录下,运行‘./bin/oozie job -oozie
http://localhost:11000/oozie
-config examples/apps/map-reduce/job.properties -run‘,注意端口号是11000,官档是8080,参数不对。执行后,输出hadoop jod id,形如‘0000000-140826104216537-oozie-cke-W’
13. 根据job id检查运行结果‘./bin/oozie job -oozie
http://localhost:11000/oozie
-info 0000000-140826104216537-oozie-cke-W‘,看到success即表明成功。
14. 显示运行结果:‘hadoop fs -cat examples/output-data/map-reduce/part-00000‘
流程是完整的,步骤是最简的,解释是忽略的 :),每一步的具体解释请参考官档。