工作流引擎服務器 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