偶然的機會,去面試的時候聽面試官講他們的調度系統是基於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