工作流引擎服務器 Hadoop Oozie 介紹

jopen 12年前發布 | 249K 次閱讀 Hadoop 工作流引擎

      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:

        工作流圖:

f472184a-96d5-3307-8d4b-c92fcf5193b1.png

 

        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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!