Oozie如何和安裝部署


1、Oozie的簡單介紹:

1、Oozie是一個工作流引擎服務器,用於運行hadoop map/reduce和hive等任務工作流,同時Oozie還是一個Java web程序,運行在Java Servlet容器中,如Tomcat中。Oozie以action為基本任務單元,可以將多個action構成一個DAG圖,(有向五環圖Direct Acyclic Graph)的模式進行運行。Oozie工作流通過HPDL(一種通過XML自定義處理的語言)來構造Oozie的工作流。一個Oozie服務器主要包括四個服務:Oozie Workflow,Oozie Coordinator,Oozie Bundle和Oozie SLA(Oozie服務器等級協定)。
  a、Oozie Workflow:該組件用於定義和執行一個特定順序的mapreduce,hive和pig作業。
  b、Oozie Coordinator:該組件用戶支持基於事件,系統資源存在性等條件的workflow的自動化執行。
  c、Oozie Bundle:該引擎可以定義和執行“一束”應用,從而提供一個批量化的方法,將一組Coordinator應用程序一起進行管理。
  d、Oozie服務器等級協定(Service Level Agreement,SLA):該組件支持workflow應用程序執行過程的記錄跟蹤。

 2、Oozie的安裝操作:

1、Oozie使用tomcat等服務器作為web頁面展示容器,使用關系型數據庫存儲Oozie的工作流元數據,默認使用derby,由於derby的缺點,一般情況使用mysql作為Oozie的元數據庫,使用extjs來作為報表展示js框架。
  a、安裝步驟:
    1)、安裝mysql。之前安裝過,省略。
    2)、安裝tomcat。
      a、下載tomcat壓縮包:wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
        [hadoop@slaver1 package]$ wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
      b、解壓縮操作。
       [hadoop@slaver1 package]$ tar -zxvf apache-tomcat-7.0.8.tar.gz -C /home/hadoop/soft/
      c、設置環境變量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export CATALINA_HOME=/home/hadoop/soft/apache-tomcat-7.0.8
        export PATH=$PATH:$CATALINA_HOME/bin
      d、啟動tomcat測試是否安裝成功。
        [hadoop@slaver1 bin]$ startup.sh
        [hadoop@slaver1 apache-tomcat-7.0.8]$ jps
        4547 Bootstrap
    3)、安裝Oozie。下載地址:archive.cloudera.com/cdh5/cdh/5/oozie-4.0.0-cdh5.3.6.tar.gz
      a、下載Oozie安裝包解壓縮操作和ext-2.2.zip。
        [hadoop@slaver1 package]$ tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C /home/hadoop/soft/
      b、設置用戶環境變量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export OOIZE_HOME=/home/hadoop/soft/oozie-4.0.0-cdh5.3.6
        export PATH=$PATH:$OOIZE_HOME/bin
      c、修改cong/Oozie-site.xml文件進行配置信息修改。(這個文件的內容可以去Oozie-default.xml文件找)
        主要就是進行元數據指定和service的指定:
        配置信息見下面所示:
      如果修改端口號,可以在conf/oozie-enc.sh文件中進行參數修改,比如修改端口號,默認端口號為11000。
      d、在Oozie根目錄下創建libext文件夾,並將Oozie依賴的其他第三方jar移動到該目錄下面。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ mkdir libext
        然后將mysql的driver壓縮包到libext文件夾中:
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ cp /home/hadoop/package/mysql-connector-java-5.1.31.jar ./libext/
      e、創建Oozie元數據庫。執行sql創建,執行完成后,mysql中出現數據庫和數據表:
        [hadoop@slaver1 ~]$ ooziedb.sh create -sqlfile oozie.sql -run
      f、設置hadoop代理用戶。必須設置 哦。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ vim /home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/etc/hadoop/core-site.xml
         <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>
      g、在hdfs上設置Oozie的公用jar文件夾。
        hadoop的默認端口號是8020,我改成了9000,所以這里注意一下:
        [hadoop@slaver1 ~]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:8020 -locallib $OOIZE_HOME/oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:9000 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
      h、創建Oozie的war文件。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ addtowar.sh -inputwar ./oozie.war -outputwar ./oozie-server/webapps/oozie.war -hadoop 2.5.0 $HADOOP_HOME -jars ./libext/mysql-connector-java-5.1.31.jar -extjs ../../../hadoop/package/ext-2.2.zip
        或者將hadoop相關包,mysql相關包,ext相關壓縮包放到libext文件夾中,運行oozie-setup.sh prepare-war也可以創建war文件。
      i、運行Oozie並檢查是否安裝完成。
        oozied.sh run 或者oozied.sh start(前端在前端運行,后者在后台運行)
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozied.sh start
      j、查詢web界面&查看狀態:oozie admin -oozie http://slaver1:11000/oozie -status。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie admin -oozie http://slaver1:11000/oozie -status

3:Oozie的conf文件修改oozie.site.xml:

<?xml version="1.0"?>
<configuration>
    <property>
        <name>oozie.services</name>
        <value>
        org.apache.oozie.service.JobsConcurrencyService,
            org.apache.oozie.service.SchedulerService,
            org.apache.oozie.service.InstrumentationService,
            org.apache.oozie.service.MemoryLocksService,
            org.apache.oozie.service.CallableQueueService,
            org.apache.oozie.service.UUIDService,
            org.apache.oozie.service.ELService,
            org.apache.oozie.service.AuthorizationService,
            org.apache.oozie.service.UserGroupInformationService,
            org.apache.oozie.service.HadoopAccessorService,
            org.apache.oozie.service.URIHandlerService,
            org.apache.oozie.service.DagXLogInfoService,
            org.apache.oozie.service.SchemaService,
            org.apache.oozie.service.LiteWorkflowAppService,
            org.apache.oozie.service.JPAService,
            org.apache.oozie.service.StoreService,
            org.apache.oozie.service.CoordinatorStoreService,
            org.apache.oozie.service.SLAStoreService,
            org.apache.oozie.service.DBLiteWorkflowStoreService,
            org.apache.oozie.service.CallbackService,
            org.apache.oozie.service.ActionService,
            org.apache.oozie.service.ShareLibService,
            org.apache.oozie.service.ActionCheckerService,
            org.apache.oozie.service.RecoveryService,
            org.apache.oozie.service.PurgeService,
            org.apache.oozie.service.CoordinatorEngineService,
            org.apache.oozie.service.BundleEngineService,
            org.apache.oozie.service.DagEngineService,
            org.apache.oozie.service.CoordMaterializeTriggerService,
            org.apache.oozie.service.StatusTransitService,
            org.apache.oozie.service.PauseTransitService,
            org.apache.oozie.service.GroupsService,
            org.apache.oozie.service.ProxyUserService,
            org.apache.oozie.service.XLogStreamingService,
            org.apache.oozie.service.JvmPauseMonitorService
        </value>
    </property>
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
    </property>
    <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://slaver1:3306/ooize?createDatabaseIfNotExist=true</value>
    </property>

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

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>hive</value>
    </property>

    <property>
        <name>oozie.processing.timezone</name>
        <value>GMT+0800</value>
    </property>
</configuration>

 4、web界面如下所示:

 5、Oozie的工作流介紹:

1、Oozie的四大組件服務分別是:workflow,coordinator,boundle和sla。啟動sla是作為監控服務協議的一個組件,workflow定義Ooize的基本工作流,coordinator定義定時(或者是根據其他資源指標)運行的workflow任務。bundle是將多個coordinator作為一個組件一起管理。也就是說workflow是oozie中最基本的一個服務組件。三大服務的關系是:bundle包含多個coordinator,coordinator包含一個workflow,workflow定義具體的action動作。
2、workflow使用hadoop流程定義語言(hadoop process defination language,hPDL)來描述工作流,hPDL是類似xml語言的一種相當簡介的定義類語言,使用有限數目的流控制節點和動作節點來描述workflow,也就是說workflow有兩大類節點構成:工作流控制節點和動作節點。其中工作流控制節點是workflow本身提供的一種控制workflow工作流執行路徑的方法,不可以自定義,動作節點是具體的操作方法,用戶可以自定義。
  workflow工作流的聲明周期:
  a、PREP,一個工作流第一次創建就處於PREP狀態,表示工作流已經創建,但是還沒有運行。
  b、RUNNIG,當一個已經被創建的工作流job開始執行的時候,就處於RUNNING狀態。它不會達到結束狀態,只能因為出錯而結束或者被掛起。
  c、SUSPENDED,一個RUNNING狀態的工作流Job會變成SUSPENDED狀態,而且它會一直處於該狀態,除非這個工作流Job被重啟開始執行或者被殺死。
  d、SUCCESSEDED,當一個RUNNING狀態的工作流Job達到了end節點,他就變成了SUCCESSEDED最終完成狀態。
  e、KILLED,當一個工作流Job處於被創建后的狀態。或者處於RUNNING,SUSPENDED狀態時,被殺死,則工作流Job的狀態變為了KILLED狀態。
  f、FAILED,當一個工作流Job不可預期的錯誤失敗而終止,就會變成FAILED狀態。
3、
4、

 組件之間的關系如下所示:

6、

 

 

 

 

 

待續......


免責聲明!

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



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