Oozie 01-概览

2018-10-19  本文已影响0人  jupiter_2000

Apache Hadoop工作流引擎

Oozie工作流概览

Oozie是一个基于工作流引擎的服务器,专用于运行包含了Hadoop Map/Reduce和Pig作业的工作流。
Oozie是一个运行在Java servlet容器中的Java Web应用。
一个工作流是一些存在依赖关系action的有向无环图。从一个action到另一个action的依赖控制意味着,只有第一个action完成,第二个action才能开始运行。
Oozie工作流定义是通过hPDL(hadoop Process Definition Language)来描述的。
Oozie工作流action在远端系统(比如Hadoop,Pig)上启动作业。一旦action完成,远端系统回调Oozie通知action的执行完成,在该点Oozie得以继续处理工作流中的下一个action。
Oozie工作流包含控制流(control flow)节点和action节点。
控制流节点定义了工作流的开始和结束(比如start,end,fail节点),同时提供控制工作流执行路径的机制(比如decision,fork,join节点)。
action节点提供了一个让工作流触发计算任务或处理任务执行的机制。Ooize提供了对多种不同类型action的支持:Hadoop map-reduce,Hadoop file system,Pig,SSH,HTTP,eMail,sub-workflow。Oozie可扩展支持更多类型的action。
Oozie工作流可被参数化(在工作流的定义中使用形如${inputDir}的变量)。当提交一个工作流作业时,必须要提供参数的取值。适当的使用参数(比如使用不同的输出目录),多个完全一样的工作流作业可并发运行。

WordCount工作流示例

工作流图

hPDL定义的工作流:

<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>
上一篇 下一篇

猜你喜欢

热点阅读