1. 程式人生 > >Hadoop Oozie 學習筆記(六) Hadoop Oozie概述

Hadoop Oozie 學習筆記(六) Hadoop Oozie概述

      網上中文資料有點少,我這裡翻譯下官網.對自己也是個梳理,希望對大家也有用.

      Oozie是一個工作流引擎伺服器,用於執行Hadoop Map/Reduce和Pig 任務工作流.同時Oozie還是一個Java Web程式,執行在Java Servlet容器中,如Tomcat.

       Oozie工作流中擁有多個Action,如Hadoop Map/Reuce job,Hadoop Pig job等,所有的Action以有向無環圖(DAG Direct Acyclic Graph)的模式部署執行.所以在Action的執行步驟上是有方向的,只能上一個Action執行完成後才能執行下一個Action.

       Oozie工作流通過HPDL(一種通過XML自定義處理的語言,類似JBOSS JBPM的JPDL)來構造.

       Oozie工作流中的Action在運程系統執行如(Hadoop,Pig伺服器上).一旦Action完成,遠端伺服器將回調Oozie的介面並通知Action已經完成,這時Oozie又會以同樣的方式執行工作流中的下一個Action,直到工作流中所有Action都完成(完成包括失敗)

       Oozie工作流中包含可控制的工作流節點(control flow node)和Action節點(action node).

       Control flow node其實可以理解為Oozie的語法,比如可以定義開始(start),結束(end),失敗(fail)節點.開始節點就表示從該節點開始執行.同時也提供一種機制去控制工作流的執行過程,如選擇(decision),並行(fork),join節點.

       Oozie工作流提供各種型別的Action用於支援不同的需要,如Hadoop Map/Reduce,Hadoop File System,Pig,SSH,HTTP,Email,Java,以及Oozie子流程.Oozie也支援自定義擴充套件以上各種型別的Action .

       Oozie工作流允許自定義引數,如${inputDir}.

        WordCount Workflow Example:

        工作流圖:

        workflow.xml

Xml程式碼  收藏程式碼
  1. <workflow-app name='wordcount-wf'
     xmlns="uri:oozie:workflow:0.1">  
  2.     <start to='wordcount'/>  
  3.     <action name='wordcount'>  
  4.         <map-reduce>  
  5.             <job-tracker>${jobTracker}</job-tracker>  
  6.             <name-node>${nameNode}</name-node>  
  7.             <configuration>  
  8.                 <property>  
  9.                     <name>mapred.mapper.class</name>  
  10.                     <value>org.myorg.WordCount.Map</value>  
  11.                 </property>  
  12.                 <property>  
  13.                     <name>mapred.reducer.class</name>  
  14.                     <value>org.myorg.WordCount.Reduce</value>  
  15.                 </property>  
  16.                 <property>  
  17.                     <name>mapred.input.dir</name>  
  18.                     <value>${inputDir}</value>  
  19.                 </property>  
  20.                 <property>  
  21.                     <name>mapred.output.dir</name>  
  22.                     <value>${outputDir}</value>  
  23.                 </property>  
  24.             </configuration>  
  25.         </map-reduce>  
  26.         <ok to='end'/>  
  27.         <error to='end'/>  
  28.     </action>  
  29.     <kill name='kill'>  
  30.         <message>Something went wrong: ${wf:errorCode('wordcount')}</message>  
  31.     </kill/>  
  32.     <end name='end'/>  
  33. </workflow-app>  

      同時自己成org.myorg.WordCount這個Hadoop Map/Reduce Job,網上搜索一大把.

配置打包後通過OozieClient提交給Hadoop就直接可以運行了.