工作流引擎服務器 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
<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
<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就直接可以運行了.
來自:http://guoyunsky.iteye.com/blog/1391975