oozie 入門

oozie概述:oozie能幹什麼

oozie格式:怎麼用oozie

oozie執行:怎麼運行oozie 

 

oozie概述:

oozie是基於hadoop的調度器,以xml的形式寫調度流程,可以調度mr,pig,hive,shell,jar等等。

主要的功能有

Workflow: 順序執行流程節點,支持fork(分支多個節點),join(合併多個節點爲一個)

Coordinator,定時觸發workflow

Bundle Job,綁定多個coordinator

 

oozie格式:

寫一個oozie,有兩個是必要的:job.properties 和 workflow.xml(coordinator.xml,bundle.xml)

一、job.properties裏定義環境變量

nameNode hdfs://xxx5:8020 hdfs地址
jobTracker xxx5:8034 jobTracker地址
queueName default oozie隊列
examplesRoot examples 全局目錄
oozie.usr.system.libpath true 是否加載用戶lib庫
oozie.libpath share/lib/user 用戶lib庫
oozie.wf.appication.path ${nameNode}/user/${user.name}/... oozie流程所在hdfs地址

注意:

workflow:oozie.wf.application.path

coordinator:oozie.coord.application.path

bundle:oozie.bundle.application.path

 

二、XML

 1.workflow:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="wf-example1">
  <start to="pig-node">
  <action name="pig-node">
      <pig>
           <job-tracker>${jobTracker}</job-tracker>
           <name-node>${nameNode}</name-node>
           <prepare>
              <delete path="hdfs://xxx5/user/hadoop/appresult" />
           </prepare>
           <configuration>
             <property>
                  <name>mapred.job.queue.name</name>
                   <value>default</value>
              <property>
             <property>
                  <name>mapred.compress.map.output</name>
                   <value>true</value>
              <property>
             <property>
                  <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
                   <value>false</value>
              <property>
           </configuration>
            <script>test.pig</script>
            <param>filepath=${filpath}</param>
      </pig>
       <ok to="end">
        <error to="fail">
  </action>
  <kill name="fail">
       <message>
                   Map/Reduce failed, error               message[${wf:errorMessage(wf:lastErrorNode())}]
         </message>
    </kill>
   <end name="end"/>
</workflow-app>

2.coordinator

 

Xml代碼  收藏代碼
  1. <coordinator-app name="cron-coord" frequence="${coord:hours(6)}" start="${start}" end="${end}"  
  2. timezoe="UTC" xmlns="uri:oozie:coordinator:0.2">  
  3. <action>  
  4. <workflow>  
  5.    <app-path>${nameNode}/user/{$coord:user()}/${examplesRoot}/wpath</app-path>  
  6.   <configuration>  
  7.            <property>  
  8.            <name>jobTracker</name>  
  9.            <value>${jobTracker}</value>  
  10.            </property>  
  11.            <property>  
  12.            <name>nameNode</name>  
  13.            <value>${nameNode}</value>  
  14.            </property>  
  15.            <property>  
  16.            <name>queueName</name>  
  17.            <value>${queueName}</value>  
  18.        </property>  
  19.   </configuration>  
  20. </workflow>  
  21. </action>  

 注意:coordinator設置的UTC,比北京時間晚8個小時,所以你要是把期望執行時間減8小時

 

3.bundle

 

Java代碼  收藏代碼
  1. <bundle-app name='APPNAME' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='uri:oozie:bundle:0.1'>   
  2.   <controls>  
  3.        <kick-off-time>${kickOffTime}</kick-off-time>  
  4.   </controls>  
  5.    <coordinator name='coordJobFromBundle1' >  
  6.        <app-path>${appPath}</app-path>  
  7.        <configuration>  
  8.          <property>  
  9.               <name>startTime1</name>  
  10.               <value>${START_TIME}</value>  
  11.           </property>  
  12.          <property>  
  13.               <name>endTime1</name>  
  14.               <value>${END_TIME}</value>  
  15.           </property>  
  16.       </configuration>  
  17.    </coordinator>  
  18.    <coordinator name='coordJobFromBundle2' >  
  19.        <app-path>${appPath2}</app-path>  
  20.        <configuration>  
  21.          <property>  
  22.               <name>startTime2</name>  
  23.               <value>${START_TIME2}</value>  
  24.           </property>  
  25.          <property>  
  26.               <name>endTime2</name>  
  27.               <value>${END_TIME2}</value>  
  28.           </property>  
  29.       </configuration>  
  30.    </coordinator>  
  31. </bundle-app>  

 

oozie hive

Java代碼  收藏代碼
  1. <action name="hive-app">  
  2.     <hive xmlns="uri:oozie:hive-action:0.2">  
  3.         <job-tracker>${jobTracker}</job-tracker>  
  4.         <name-node>${nameNode}</name-node>  
  5.         <job-xml>hive-site.xml</job-xml>  
  6.         <script>hivescript.q</script>  
  7.  <param>yyyymmdd=${yyyymmdd}</param>    
  8.  <param>yesterday=${yesterday}</param>  
  9.  <param>lastmonth=${lastmonth}</param>  
  10.     </hive>  
  11.     <ok to="result-stat-join"/>  
  12.     <error to="fail"/>  
  13. </action>  

  

 

 

oozie運行

啓動任務:

Java代碼  收藏代碼
  1. oozie job -oozie http://xxx5:11000/oozie -config job.properties -run  

 

停止任務:

oozie job -oozie http://localhost:8080/oozie -kill 14-20090525161321-oozie-joe

注意:在停止任務的時候,有的時候會出現全線問題,需要修改oozie-site.xml文件

hadoop.proxyuser.oozie.groups *

hadoop.proxyuser.oozie.hosts *

oozie.server.ProxyUserServer.proxyuser.hadoop.hosts *

oozie.server.ProxyUserServer.proxyuser.hadoop.groups *


發佈了12 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章