Oozie-4.0.0-cdh5.3.6搭建


  1. 到官網下載安裝包 解壓並cd到安裝目錄
  2. 解壓目錄下的 oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz  會自動解壓成目錄hadooplibs
  3. 創建文件夾 libext
  4. 將hadooplibs下面的jar包復制到libext下面
  5. 下載 EXTJS 庫並把zip文件放到libext下
  6. 編輯文件 conf/oozie-site.xml(這里可以做數據庫相關的配置,用默認的也可以)
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/usr/hadoop/hadoop-2.6.0/etc/hadoop</value>
        <description>hadoop的配置文件目錄,如果不配置的話,運行任務會報File /.../share/lib does not exist 的錯誤</description>
    </property>
    <property>
        <name>oozie.processing.timezone</name>
        <value>GMT+0800</value>
        <description>這個是設置時區,很重要,否則創建定時任務會有麻煩</description>
    </property
    
    <!--如果使用mysql 則修改下面內容-->
    <property>
            <name>oozie.service.StoreService.jdbc.driver</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
            <name>oozie.service.StoreService.jdbc.url</name>
            <value>jdbc:mysql://localhost:3306/oozie</value>
        </property>
        <property>
            <name>oozie.service.StoreService.jdbc.username</name>
            <value>oozie</value>
        </property>
        <property>
            <name>oozie.service.StoreService.jdbc.password</name>
            <value>oozie</value>
        </property>

     

  7. 創建數據庫。有兩種方式:①使用默認的;②使用指定的其他數據庫(如MySql)
    • 如果使用mysql,記得把驅動包放到server的lib目錄下(記着要先創建oozie用戶)
      cp mysql-connector.jar oozie/oozie-server/webapps/oozie/WEB-INF/lib
    • 初始化數據庫
      bin/ooziedb.sh create -sqlfile oozie.sql -run
  8. 解壓sharelib-yarn壓縮包,會得到share目錄
  9. 安裝
  10. bin/oozie-setup.sh  prepare-war sharelib create -fs hdfs://sardoop -locallib /opt/software/oozie-4.0.0-cdh5.3.6/share  
    #正常的話 最后會顯示:Oozie is ready to be started
    setup的相關細化配置參考官網文檔,如果在這一步中沒有配置sharelib,在啟動后也可以繼續設置,而且不需要重啟oozie:
    bin/oozie-setup.sh sharelib create -fs hdfs://sardoop -locallib /opt/software/oozie-4.0.0-cdh5.3.6/share  #從本地目錄向hdfs復制sharelib
    bin/oozie admin -oozie http://NameNode1:11000/oozie -sharelibupdate #更新oozie的sharelib bin/oozie admin -oozie http://localhost:11000/oozie -shareliblist #查看sharelib列表(正常應該有多條數據)  注:如果sharelib設定不正確,會出現錯誤【 Could not locate Oozie sharelib
  11. 啟動

    作為守護進程啟動:

    bin/oozied.sh start

    作為后台進程啟動:

    bin/oozied.sh run

    驗證。可以訪問 http://localhost:11000/oozie/,或者用命令 

    bin/oozie admin -oozie http://localhost:11000/oozie -status  #成功的話 應該顯示:System mode : NORMAL
  12. 停止
    bin/oozied.sh stop
  13. 在$HADOOP_HOME/etc/hadoop/core-site.xml中配置Oozie用戶。然后重啟Hadoop集群 (該步驟省略)
  14. 安裝Oozie Client。該CDH版本本身就是Client,所以不需要額外處理。
  15. 用Oozie自帶的examples驗證安裝狀況:
    1. 將Oozie自帶的examples上傳到HDFS
      $HADOOP_HOME/bin/hadoop dfs -mkdir /oozie
      
      $HADOOP_HOME/bin/hadoop dfs -copyFromLocal $OOZIE_HOME/examples /user/hadoop/examples #最后的這個路徑是hdfs上的路徑
    2. 修改 examples/apps/map-reduce/job.properties 文件(節點上的,不是hdfs上的)
      nameNode=hdfs://NameNode2:9820
      jobTracker=localhost:8032
      queueName=default
      examplesRoot=examples
      
      oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml
      outputDir=map-reduce
    3. 執行job
      bin/oozie job -oozie http://NameNode1:11000/oozie -config examples/apps/map-reduce/job.properties -run

       執行后先顯示jobID

    4. 執行之后就可以在 http://NameNode1:11000/oozie 看到job狀況。或者拿着剛才的jobid查詢
      bin/oozie job -oozie http://NameNode1:11000/oozie -info 0000000-161118140334164-oozie-hado-W

    5. 對於自已的jar包,放到hdfs上 跟workflow.xml一個目錄下,或者創建一個lib目錄然后放進去就行了

 可參考:如何查看MapReduce執行的程序中的輸出日志

注:

 1.關於時區

因為我們更改了默認的時區,設置start和end的時候也要使用對應的格式

--原來 start=2016-11-23T09:57Z --現在 start=2016-11-23T09:57+0800

 同時,如果是coordinator應用,需注意coordinator.xml文件timezone屬性值如下timezone="Asia/Shanghai";如果要在http://namenode1:11000/oozie/ 上查看 還需要設置Setting

 2.如何運行WorkFlow

關於如何運行自己的Workflow和Action,教程中是把examples目錄整個放到hdfs上面,里面還有好多源碼什么的,實際上這些都沒有用;自己用的時候,在hdfs上創建個文件夾存放workflow.xml,coordinator.xml以及jar包就可以了。具體怎么定位到這些配置呢?job.properties都幫我們做了,里面是設置了應用目錄的。

 

 

3.Oozie運行hive action。

按照官方的實例運行,發現Job總是KILLED,日志顯示【java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

解決方法:在configuration下面添加一個屬性[hive.metastore.uris]即可

<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf"> <start to="hive-node"/> <action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path="${nameNode}/user/${wf:user()}/${root}/output-data/hive"/> <mkdir path="${nameNode}/user/${wf:user()}/${root}/output-data"/> </prepare> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://NameNode1:9083</value> </property> </configuration> <script>script.q</script> <param>INPUT=/user/${wf:user()}/${root}/input-data/table</param> <param>OUTPUT=/user/${wf:user()}/${root}/output-data/hive</param> </hive> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app>

 

4.coordinator的frequency可以有兩種設定方式

  1. frequency="5 * * * *"
  2. frequency="${coord:minutes(5)}"

 

5.Oozie依賴的第三方jar包

這里面的jar包分兩類:Action中用到的,與Oozie結合的組件需要用到的。

①Action依賴的jar:

需要我們在Export程序的時候,打到程序里面。

②組件依賴的jar:

需要把jar包放到oozie的share/lib下面  並update到hdfs上

如Hive與HBase關聯使用的時候,就需要 hive-hbase-handler.jar

否則會出現問題【Class org.apache.hadoop.hive.hbase.HBaseSerDe not found】 

 

6.有關幫助腳本

 

①用於kill  oozie的job;
使用方法 ./kill.sh
if [ $# -le 0 ]
then
    echo 缺少參數
    exit 1
fi
/opt/software/oozie/bin/oozie job -oozie http://NameNode1:11000/oozie -kill $1

 

7.Sqoop Action

export --connect jdbc:mysql://NameNode1:3306/test\
--username root\
--password 123\
--table loghour\
--m 2\
--export-dir /user/hive/warehouse/loghourtmp\
--input-fields-terminated-by '\t'

 

 

參考:

  1. CDH5.3 Oozie服務搭建
  2. Oozie-3.3.2安裝配置運行實踐

  3. https://issues.apache.org/jira/browse/OOZIE-1981


免責聲明!

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



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