Oozie4.2 安裝部署、以及example測試


編譯:

使用的環境是:Hadoop2.6.0、Spark1.4.0、Hive0.13.1、Sqoop1.4.4

編譯Oozie的命令:./mkdistro.sh -Phadoop-2 -Dhadoop.auth.version=2.6.0 -Ddistcp.version=2.6.0 -Dsqoop.version=1.4.4 -Dhive.version=0.13.1 -Dpig.version=0.15.0

(突然發現,編譯時沒有指定Spark的版本)

經過艱難漫長的編譯過程,最后得到了oozie-4.2.0-distro.tar.gz。

 

Oozie4.2 Server安裝

所需環境:

Unix (tested in Linux and Mac OS X)

Java 1.6+

Hadoop(tested with 1.0.0 & 0.23.1)

ExtJS library (可選, 用於Oozie webconsole,本文檔中使用)

MySQL(可選,本文檔中使用)

 

開始安裝:

將編譯好的oozie-4.2.0-distro.tar.gz解壓到/opt下

1、修改環境變量

vim /etc/profile,加入OOZIE_HOME這個環境變量,並在PATH中加入$OOZIE_HOME/bin,保存退出,然后執行source  /etc/profile

2、修改/opt/oozie-4.2.0/conf下的 oozie-site.xml文件,在oozie-site.xml中增加以下配置信息:

<!--mysql作為元數據存放的數據庫-->
<property>
    <name>oozie.service.JPAService.jdbc.driver</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>
        JDBC driver class.
    </description>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.url</name>
    <value>jdbc:mysql://192.168.127.11:3306/oozie</value>
    <description>
        JDBC URL.
    </description>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.username</name>
    <value>root</value>
    <description>
        DB user name.
    </description>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.password</name>
    <value>123456</value>
    <description>
        DB user password.
        IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
        if empty Configuration assumes it is NULL.
    </description>
</property>
<!--設置Hadoop的配置文件的路徑-->
<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
    <value>*=/opt/hadoop-2.6.0/etc/hadoop</value>
    <description>
        Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
        the Hadoop service (JobTracker, YARN, HDFS). The wildcard '*' configuration is
        used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
        the relevant Hadoop *-site.xml files. If the path is relative is looked within
        the Oozie configuration directory; though the path can be absolute (i.e. to point
        to Hadoop client conf/ directories in the local filesystem.
    </description>
</property>
<!--設置Spark的配置文件的路徑-->
<property>
    <name>oozie.service.SparkConfigurationService.spark.configurations</name>
    <value>*=/opt/spark-1.4.0-bin-hadoop2.6-hive/conf</value>
    <description>
        Comma separated AUTHORITY=SPARK_CONF_DIR, where AUTHORITY is the HOST:PORT of
        the ResourceManager of a YARN cluster. The wildcard '*' configuration is
        used when there is no exact match for an authority. The SPARK_CONF_DIR contains
        the relevant spark-defaults.conf properties file. If the path is relative is looked within
        the Oozie configuration directory; though the path can be absolute.  This is only used
        when the Spark master is set to either "yarn-client" or "yarn-cluster".
    </description>
</property>
<!--
設置系統庫存放在hdfs中,注意只有在job.properties中將設置oozie.use.system.libpath=true才會引用系統庫
。注意,下面ns1是namenode的邏輯名稱,根據自己集群的情況進行更改即可-->
<property>
    <name>oozie.service.WorkflowAppService.system.libpath</name>
    <value>hdfs://ns1/user/${user.name}/share/lib</value>
    <description>
        System library path to use for workflow applications.
        This path is added to workflow application if their job properties sets
        the property 'oozie.use.system.libpath' to true.
    </description>
</property>

 3、在Hadoop配置文件的core-site.xml中增加如下配置信息。注意:修改完后,需要重啟hadoop。

    <!--
    <property>
        <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
        <value>[OOZIE_SERVER_HOSTNAME]</value>
    </property>
    <property>
        <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
        <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
    </property>
    其中[OOZIE_SERVER_USER]是安裝使用oozie server的用戶
        [OOZIE_SERVER_HOSTNAME]是安裝oozie server的主機名
        [USER_GROUPS_THAT_ALLOW_IMPERSONATION]是用戶的所屬組
     以上漢字純屬個人見解,如有問題歡迎指正
    -->
    <!-- OOZIE -->
<property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>centos01</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>root</value>
    </property>

注意:在hadoop.proxyuser.root.groups的值改成*,也是可以運行的。

4、在/opt/oozie-4.2.0目錄下創建一個libext目錄,並在/opt/hadoop-2.6.0目錄下使用以下命令將Hadoop下的所有jar包復制到libext目錄中:find -name *.jar |xargs  -t -i cp {} /opt/oozie-4.2.0/libext。注意:需要將libext中的hsqldb-2.0.0.jar刪掉,否則會引起jar包沖突。

5、將下載好的ext-2.2.zip以及mysql驅動包(例如:mysql-connector-java-5.1.35.jar)復制到libext目錄下。

6、執行下面的命令,將ext2.2.0.zip、hadoop的相關jar包、以及mysql-connector-java-<版本>.jar、htrace-core-<版本>.jar、avro-<版本>.jar 打進新war包里:

bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip -jars /opt/oozie-4.2.0/libext/mysql-connector-java-5.1.35.jar:/opt/oozie-4.2.0/libext/htrace-core-3.0.4.jar:/opt/oozie-4.2.0/libext/avro-1.7.4.jar

注意:

1) htrace-core和avro這兩個jar包不加的話,后面提交job時會出錯!並且執行了上面這句后,就不能再執行bin/oozie-setup.sh prepare-war 了,否則替換掉oozie-server/webapps/中已經生成的oozie.war。

2)在ubuntu上執行上面命令時遇到zip:command not found;Failed:Creating new Oozie WAR的問題。這是因為沒有安裝Zip導致的。裝上即可。

7、如果還沒有安裝mysql,那么需要安裝一個mysql。安裝好后嗎,在mysql數據庫中創建名為oozie的數據庫(注意:oozie-site.xml中有個配置項oozie.service.JPAService.create.db.schema,默認值為false,表示非自動創建數據庫,所以我們需要自己創建oozie數據庫),並進行訪問授權,然后在/opt/oozie-4.2.0/下執行:

bin/ooziedb.sh create -sqlfile oozie.sql -run

查看oozie數據庫,如果產生了以下的表,就說明該步驟OK

8、安裝oozie-sharelib。

1) 在oozie-4.2.0目錄下有一個 oozie-sharelib-4.2.0.tar.gz。使用tar -zxvf oozie-sharelib-4.2.0.tar.gz將它解壓。解壓出后是一個share目錄

2)進入到share/lib/sqoop中。將sqoop-1.4.6-hadoop100.jar去掉(我這邊改成sqoop-1.4.6-hadoop100.jar.bak)

注意:之所以要將sqoop-1.4.6-hadoop100.jar去掉,是因為我發現,在不去掉的情況下,運行Sqoop的例子會報錯。這個錯誤可能是sqoop-1.4.6-hadoop100和sqoop-1.4.4-hadoop200.jar中的類沖突導致的。去掉之后,就可以成功運行了。

3)將mysql-connector-java-5.1.35.jar復制到/opt/oozie-4.2.0/share/lib/sqoop目錄中。如果沒有這個jar,將不能從mysql將數據導入或導出。

3)將這個share上傳到hdfs上:

hdfs dfs -put  /opt/oozie-4.2.0/share  /user/root

注意,與oozie-site.xml中的oozie.service.WorkflowAppService.system.libpath的值保持一致,所以必須放到/user/root這個目錄下。

9、使用以下命令啟動oozie服務:

bin/oozie-start.sh

這時在/opt/oozie-4.2.0/oozie-server/webapps目錄下多了oozie這個目錄。如果缺少jar包或者jar包沖突了可以對

/opt/oozie-4.2.0/oozie-server/webapps/oozie/WEB-INF/lib中的進行添加或刪除jar包


10、使用以下命令驗證服務是否啟動成功,

oozie admin -oozie http://localhost:11000/oozie -status

如果是System model:Normal,表明啟動成功,否則失敗。
11、查看是否可以通過瀏覽器訪問web頁面:

http://192.168.127.11:11000/oozie/

12、在運行job之前,最好開啟Hadoop的jobhistory。它可以幫助你查看job調度時產生的日志。啟動命令:

mr-jobhistory-daemon.sh start historyserver

使用jps命令查看是否啟動成功,如果出現了 JobHistoryServer進程,表示啟動成功。

 (如果在第3步中hadoop還沒有重啟,需要重啟下,否則后面的job可能會運行失敗)

 

Oozie4.2 Client安裝

Oozie server 安裝中已經包括了Oozie client。如果想要在其他機子上也使用Oozie,那么只要在那些機子上安裝Oozei的client即可。

所需環境:

Unix (tested in Linux and Mac OS X)

Java 1.6+

 

開始安裝

1、Oozie4.2中有一個oozie-client-4.2.0.tar.gz,將它復制到需要安裝oozie client的機子上

2、解壓:

tar zxvf /data/insallers/oozie-client-4.2.0.tar.gz -C /opt

這時在/opt下有一個 oozie-client-4.2.0

3、添加環境變量:

注意:上面還可以添加一個環境變量,export OOZIE_URL=http://centos01:11000/oozie這樣在后面的oozie job這個命令中就不需要加 -oozie了

4、然后可以直接使用oozie來操作了,例如:

可以使用oozie job -oozie http://centos01:11000/oozie -config /data/installers/examples/apps/sqoop/job.properties -run 這樣的命令來操作了。

 

Oozie Examples

 1、在/opt/oozie-4.2.0下有一個oozie-examples.tar.gz 。將它進行解壓,解壓之后生成一個examples目錄。在該目錄的apps中有一些簡單的例子:

 

 2、在運行這些例子之前,需要對這些例子進行一些修改,例如我們運行shell這個例子。

 

先來查看一下job.properties的內容:

這些例子中JobTracker 都是localhost:8021,NameNode 都是hdfs://localhost:8020 。這是hadoop1的端口。我們需要根據自己集群的情況,對它做相應的修改。我現在的hadoop集群是2.6.0版本的。並且NameNode和ResourceManager都是HA的。所以我的配置是:

注意:這里ns1 是hadoop中hdfs-site.xml中的dfs.nameservices。rm1,rm2是yarn-site.xml中的yarn.resourcemanager.ha.rm-ids(如下2圖)。如果ResourceManager不采用HA,采用的是單點,那么將8021這個端口改成8032端口(yarn.resourcemanager.address)。例如:ResourceManager所在的主機名centos03,那么改成jobTracker=centos03:8032即可。

3、將examples這個文件上傳到hdfs中的/user/${user.name} 中,我采用的是root這個用戶,所以是/user/root

4、執行以下命令運行
oozie  job  -oozie  http://centos01:11000/oozie  -config  /data/installers/examples/apps/shell/job.properties  -run
注意: -oozie 后面跟的是oozie server的地址,-config后面跟的是執行的腳本,除了在hdfs上要有一份examples,在本地也需要一份。這個命令中的/data/installers/examples/apps/shell/job.properties 是本地路徑的job.properties,不是hdfs上的。
5、根據上面的job Id ,可以使用下列命令進行查看
 oozie job -oozie http://centos01:11000/oozie -info 0000001-150804235314037-oozie-root-W
6、根據上面的job Id ,可以使用下列命令進行日志

oozie job -oozie http://centos01:11000/oozie -log 0000001-150804235314037-oozie-root-W

7、可以訪問http://centos01:11000/oozie 查看提交的job的情況:

參考網站:

https://hadooptutorial.info/oozie-share-lib-does-not-exist-error/#javaioFileNotFoundException_File_userusersharelib_does_not_exist
http://blog.csdn.net/teddeyang/article/details/16339533
http://oozie.apache.org/docs/4.2.0/AG_Install.html
http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_17_6.html

http://stackoverflow.com/questions/11555344/sqoop-export-fail-through-oozie

 

以下主要是我在安裝使用oozie時遇到的一些問題,如果按照上面的步驟安裝使用,可能就不會出現下面的問題了,可以忽略不看!

1、關於addtower命令:

2、遇到過的問題:

1)編譯時出現,解決方法:手動下載maven-clean-plugin插件的jar

2)編譯時出現,解決方法:mvn dependency::tree

3)編譯時出現,解決方法:手動下載依賴

4)安裝時出現。解決方法:移除libext中的hsqldb-2.0.0.jar

5) 安裝時出現,使用“bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip”命令替代“bin/oozie-setup.sh prepare-war”這個命令來解決。原因可能是后面的命令會將libext中雜七雜八的jar包放入到oozie-server/webapps/oozie/WEB-INF/lib/ 中,引起jar包沖突等問題。

6)有時出現無法啟動或關閉oozie服務時,嘗試將/opt/oozie-4.2.0/oozie-server/temp下的除了safeToDelete.tmp文件的其他文件刪掉,即可(即只保留safeToDelete.tmp)。

7) oozie服務啟動失敗:


在/opt/oozie-4.2.0/logs中查看catalina.out這個日志,根據提示信息,應該是沒有mysql驅動的原因。

將mysql驅動包復制到oozie-server/webapps/oozie/WEB-INF/lib/下:

cp libext/mysql-connector-java-5.1.35.jar  oozie-server/webapps/oozie/WEB-INF/lib/ 
重新執行第9和第10步,現在oozie服務已經成功啟動了:

8)、提交job時出現“Error:HTTP error code:500:Internal Server Error”的問題

發現在localhost.2015-08-03.log這個日志文件中記錄了這個錯誤:

解決方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入htrace-core-3.0.4.jar

9)、job執行完成后出現。解決方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入avro-1.7.4.jar

10)、執行sqoop相關jab后出現。解決方法:去掉share/lib/sqoop中的sqoop-1.4.6-hadoop100.jar


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM