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程式碼-
<workflow-app name='wordcount-wf'
- <start to='wordcount'/>
- <action name='wordcount'>
- <map-reduce>
- <job-tracker>${jobTracker}</job-tracker>
- <name-node>${nameNode}</name-node>
- <configuration>
- <property>
- <name>mapred.mapper.class</name>
- <value>org.myorg.WordCount.Map</value>
- </property>
- <property>
- <name>mapred.reducer.class</name>
- <value>org.myorg.WordCount.Reduce</value>
- </property>
- <property>
- <name>mapred.input.dir</name>
- <value>${inputDir}</value>
- </property>
- <property>
- <name>mapred.output.dir</name>
- <value>${outputDir}</value>
- </property>
- </configuration>
- </map-reduce>
- <ok to='end'/>
- <error to='end'/>
- </action>
- <kill name='kill'>
- <message>Something went wrong: ${wf:errorCode('wordcount')}</message>
- </kill/>
- <end name='end'/>
- </workflow-app>
同時自己成org.myorg.WordCount這個Hadoop Map/Reduce Job,網上搜索一大把.
配置打包後通過OozieClient提交給Hadoop就直接可以運行了.