oozie 安裝過程總結

最近公司要使用hue這個軟件來做爲hadoop圖形化用戶界面。hue由我一個同事搭建成功,我發現使用hue來建立工做流(workflow)時須要oozie的支持,之前只知道oozie是一個hadoop任務調度器,可是一直沒使用過,今天正好趁這個機會嘗試一下。html

環境說明

  1. CentOS release 6.6 (Final)java

  2. hadoop 2.6.0node

  3. oozie 4.1.0mysql

  4. jdk 1.7.0_40web

  5. maven 3.2.3sql

我這裏使用的版本都是較新的版本。安裝oozie的先決條件是hadoop已經成功部署.數據庫

還須要說明的是,oozie 自己 apache 只提供源碼,須要本身編譯,編譯須要的軟件在官方有說明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也能成功編譯。api

安裝步驟

1. maven安裝

oozie使用maven構建,因此第一步就是安裝maven,並把maven的bin目錄加入到PATH中,這一步比較簡單,這裏再也不贅述。tomcat

2. 編譯oozie

首先去oozie官網下載,能夠執行

wget http://mirrors.cnnic.cn/apache/oozie/4.1.0/oozie-4.1.0.tar.gz

解壓該文件,這裏須要修改下pom.xml文件中的幾個property,首先是java版本,我這裏用的1.7,它默認的是1.6,這裏不能用1.8,不然會編譯失敗。

<targetJavaVersion>1.7</targetJavaVersion>

另外一個須要改的property是hadoop.version,我這裏用的是2.6.0,可是oozie自己只支持到2.3.0(你們能夠去這裏看看,截止到2015-5-7,只支持到hadoop2.3.0),因此這裏改成

<hadoop.version>2.3.0</hadoop.version>

還有其餘的像hive、hbase的版本,你們能夠根據實際狀況修改。

好,上面的都改完後,就能夠編譯了:

bin/mkdistro.sh -DskipTests -Dhadoop.version=2.3.0

編譯使用oozie提供的mkdistro.sh腳本,須要注意的是,這裏咱們又一次指定了hadoop版本,我第一次沒有指定,用的是貌似仍是1.1.0,因此這裏保險,你們在指定次吧。

編譯時會去下載各類依賴jar包,這是就要看你的網速如何了。當你看到相似下面的信息時,恭喜你,編譯成功了。

[INFO] Reactor Summary:
[INFO]
[INFO] Apache Oozie Main .................................. SUCCESS [  1.440 s]
[INFO] Apache Oozie Client ................................ SUCCESS [ 22.217 s]
[INFO] Apache Oozie Hadoop 1.1.1.oozie-4.1.0 .............. SUCCESS [  0.836 s]
[INFO] Apache Oozie Hadoop Distcp 1.1.1.oozie-4.1.0 ....... SUCCESS [  0.065 s]
[INFO] Apache Oozie Hadoop 1.1.1.oozie-4.1.0 Test ......... SUCCESS [  0.182 s]
[INFO] Apache Oozie Hadoop Utils 1.1.1.oozie-4.1.0 ........ SUCCESS [  0.784 s]
[INFO] Apache Oozie Hadoop 2.3.0.oozie-4.1.0 .............. SUCCESS [  4.803 s]
[INFO] Apache Oozie Hadoop 2.3.0.oozie-4.1.0 Test ......... SUCCESS [  0.254 s]
[INFO] Apache Oozie Hadoop Distcp 2.3.0.oozie-4.1.0 ....... SUCCESS [  0.066 s]
[INFO] Apache Oozie Hadoop Utils 2.3.0.oozie-4.1.0 ........ SUCCESS [  1.033 s]
[INFO] Apache Oozie Hadoop 0.23.5.oozie-4.1.0 ............. SUCCESS [  3.231 s]
[INFO] Apache Oozie Hadoop 0.23.5.oozie-4.1.0 Test ........ SUCCESS [  0.336 s]
[INFO] Apache Oozie Hadoop Distcp 0.23.5.oozie-4.1.0 ...... SUCCESS [  0.062 s]
[INFO] Apache Oozie Hadoop Utils 0.23.5.oozie-4.1.0 ....... SUCCESS [  0.878 s]
[INFO] Apache Oozie Hadoop Libs ........................... SUCCESS [  3.780 s]
[INFO] Apache Oozie Hbase 0.94.2.oozie-4.1.0 .............. SUCCESS [  0.338 s]
[INFO] Apache Oozie Hbase Libs ............................ SUCCESS [  0.692 s]
[INFO] Apache Oozie HCatalog 0.13.1.oozie-4.1.0 ........... SUCCESS [  0.919 s]
[INFO] Apache Oozie HCatalog Libs ......................... SUCCESS [  1.735 s]
[INFO] Apache Oozie Share Lib Oozie ....................... SUCCESS [ 13.552 s]
[INFO] Apache Oozie Share Lib HCatalog .................... SUCCESS [ 40.232 s]
[INFO] Apache Oozie Core .................................. SUCCESS [05:03 min]
[INFO] Apache Oozie Docs .................................. SUCCESS [01:07 min]
[INFO] Apache Oozie Share Lib Pig ......................... SUCCESS [01:38 min]
[INFO] Apache Oozie Share Lib Hive ........................ SUCCESS [ 12.927 s]
[INFO] Apache Oozie Share Lib Sqoop ....................... SUCCESS [  5.655 s]
[INFO] Apache Oozie Share Lib Streaming ................... SUCCESS [  4.577 s]
[INFO] Apache Oozie Share Lib Distcp ...................... SUCCESS [  1.900 s]
[INFO] Apache Oozie WebApp ................................ SUCCESS [02:26 min]
[INFO] Apache Oozie Examples .............................. SUCCESS [  3.762 s]
[INFO] Apache Oozie Share Lib ............................. SUCCESS [ 11.415 s]
[INFO] Apache Oozie Tools ................................. SUCCESS [ 10.718 s]
[INFO] Apache Oozie MiniOozie ............................. SUCCESS [  9.647 s]
[INFO] Apache Oozie Distro ................................ SUCCESS [ 27.966 s]
[INFO] Apache Oozie ZooKeeper Security Tests .............. SUCCESS [  7.040 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:32 min
[INFO] Finished at: 2015-05-07T14:51:39+08:00
[INFO] Final Memory: 139M/1329M
[INFO] ------------------------------------------------------------------------

Oozie distro created, DATE[2015.05.07-06:38:04GMT] VC-REV[unavailable], available at [/data/users/xigua/oozie-4.1.0/distro
/target]

編譯後的文件在distro/target文件夾內,我這裏文件名爲oozie-4.1.0-distro.tar.gz

3. 安裝oozie server

通過上面的編譯,咱們獲得了二進制版的oozie,下面就能夠部署server了,因而可知oozie使用的BS模式。
解壓oozie-4.1.0-distro.tar.gz這個編譯後的文件,進入改目錄,建立個文件夾

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中

jasper-compiler-5.5.23.jar
jasper-runtime-5.5.23.jar
jsp-api-2.1.jar

若是你用的hadoop版本不是2.6.0,那麼這裏的版本有可能不同,但務必確保,把這三個jar刪除。我當時找出這三個jar包,廢了2個多小時,心情非常受打擊。

oozie server還須要依賴個數據庫,我這裏用的是經常使用的mysql,因此須要把mysql的驅動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>com.mysql.jdbc.Driver</value>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.url</name>
    <value>jdbc:mysql://localhost:3306/oozie?createDatabaseIfNotExist=true</value>
</property>

<property>
    <name>oozie.service.JPAService.jdbc.username</name>
    <value>oozie</value>
</property>

<property>
    <name>oozie.service.JPAService.jdbc.password</name>
    <value>oozie</value>
</property>
<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
    <value>*=/opt/hadoop/etc/hadoop</value>
</property> 
<!-- 下面兩個配置是hue用到的-->
<property>
    <name>oozie.service.ProxyUserService.proxyuser.hue.hosts</name>
    <value>*</value>
</property>

<property>
    <name>oozie.service.ProxyUserService.proxyuser.hue.groups</name>
    <value>*</value>
</property>

確保mysql中oozie用戶有建立數據庫的權限,若是不放心,咱們能夠先建立出來:

create database oozie;
grant all privileges on oozie.* to oozie@'%' identified by 'oozie';
FLUSH PRIVILEGES;

上面的配置中,指定了hadoop配置文件位置:*=/opt/hadoop/etc/hadoop,這裏的*=不能少,你根據實際狀況修改你的hadoop路徑便可。

好,上面的步驟完成後,就能夠生產server的war包了:

bin/oozie-setup.sh prepare-war

你會看到下面一系列輸出:

setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/activation-1.1.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/aopalliance-1.0.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/apacheds-i18n-2.0.0-M15.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/apacheds-kerberos-codec-2.0.0-M15.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/api-asn1-api-1.0.0-M20.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/api-util-1.0.0-M20.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/asm-3.2.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/avro-1.7.4.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/aws-java-sdk-1.7.4.jar
...
...
jar 包太多,我這裏就忽略了
...
...
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/xz-1.0.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/zookeeper-3.4.6.jar

New Oozie WAR file with added 'ExtJS library, JARs' at /opt/.version/oozie-4.1.0/oozie-server/webapps/oozie.war


INFO: Oozie is ready to be started

好,看到這裏說明server已經生成了。

在啓動以前,咱們還須要把執行下面的命令:

bin/oozie-setup.sh  sharelib  create -fs hdfs://<namenode-hostname>:8020

這把hadoop的一些jar包傳到hdfs上,後面會用到。

到此爲止,運行server的準備工做就都作好了,在開啓server以前,咱們還須要對hadoop的core-site.xml作以下修改:

<property>
   <name>hadoop.proxyuser.oozie.hosts</name>
   <value>*</value>
</property>
<property>
   <name>hadoop.proxyuser.oozie.groups</name>
   <value>*</value>
</property>

上面這兩個配置是爲oozie添加假裝功能(impersonation),關於假裝功能,我這裏不在細說,你們能夠看本篇文章最後參考文章中的第三篇。
添加假裝功能後,不須要重啓hdfs與yarn,執行下面的命令便可:

hdfs dfsadmin -refreshSuperUserGroupsConfiguration
yarn rmadmin -refreshSuperUserGroupsConfiguration

最後,激動人心的時候就要到了,根據上面假裝功能的配置,我用oozie用戶開啓server:

bin/oozied.sh start

若是,你上面的步驟都正確,那麼你應該能看到下面的頁面(默認端口是:11000):
oozie server

參考文章:

  1. Oozie安裝與部署

  2. Hadoop Oozie學習筆記(一) 自定義安裝和啓動

  3. Hadoop 2.0中用戶安全假裝/模仿機制實現原理

相關文章
相關標籤/搜索