`

oozie-工作流控制节点详述

 
阅读更多
控制节点包括start、end、kill、decision、fork、join。其中start、end、kill代表了工作流的起始及工作流执行逻辑(路径),如decision、fork、join

节点名称必需复合 [a-zA-Z][\-_a-zA-Z0-0]* ,最大20个字符;

start控制节点
此节点是工作流任务的入口点,工作流定义必须有一个start节点


语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
  ...
  <start to="[NODE-NAME]"/>
  ...
</workflow-app>

例:
<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <start to="firstHadoopJob"/>
    ...
</workflow-app>

end 节点
此节点是工作流执行成功的节点。当工作流有多个任务执行,其中有一个到达end节点,其它任务会被kill掉,但结果是成功的。工作流定义必须有一个end节点

语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
    ...
    <end name="[NODE-NAME]"/>
    ...
</workflow-app>

例:

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <end name="end"/>
</workflow-app>

kill节点
此节点,允许工作流任务kill自己,当工作流遇到错误,会执行kill节点。如果有多个工作流任务,其中有一个先到达了kill节点,其它任务也会被kill掉,整个任务是失败的。工作流定义可以有零个或多个kill节点


语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
    ...
    <kill name="[NODE-NAME]">
        <message>[MESSAGE-TO-LOG]</message>
    </kill>
    ...
</workflow-app>

message 元素的内容会记录工作流任务被kill的原因

例:

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <kill name="killBecauseNoInput">
        <message>Input unavailable</message>
    </kill>
    ...
</workflow-app>

decision节点
此节点允许根据条件选择不同的执行路径,比较像swith-case表达式,通过断言来决定执行哪个路径,switch-case建议有一个default,以免出现错误。断言是JSP Expression Language(EL)表达式

语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
    ...
    <decision name="[NODE-NAME]">
        <switch>
            <case to="[NODE_NAME]">[PREDICATE]</case>
            ...
            <case to="[NODE_NAME]">[PREDICATE]</case>
            <default to="[NODE_NAME]"/>
        </switch>
    </decision>
    ...
</workflow-app>

例:

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <decision name="mydecision">
        <switch>
            <case to="reconsolidatejob">
              ${fs:fileSize(secondjobOutputDir) gt 10 * GB}
            </case>
            <case to="rexpandjob">
              ${fs:filSize(secondjobOutputDir) lt 100 * MB}
            </case>
            <case to="recomputejob">
              ${ hadoop:counters('secondjob')[RECORDS][REDUCE_OUT] lt 1000000 }
            </case>
            <default to="end"/>
        </switch>
    </decision>
    ...
</workflow-app>

fork & join节点
fork节点把一个执行路径分发成多个并发执行路径
join节点一直等待,直到所有的fork节点执行路径到达join节点
fork&join节点必须成对出现

语法:

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
    ...
    <fork name="[FORK-NODE-NAME]">
        <path start="[NODE-NAME]" />
        ...
        <path start="[NODE-NAME]" />
    </fork>
    ...NAME
    <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />
    ...
</workflow-app>

例:

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <fork name="forking">
        <path start="firstparalleljob"/>
        <path start="secondparalleljob"/>
    </fork>
    <action name="firstparallejob">
        <map-reduce>
            <job-tracker>foo:9001</job-tracker>
            <name-node>bar:9000</name-node>
            <job-xml>job1.xml</job-xml>
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <action name="secondparalleljob">
        <map-reduce>
            <job-tracker>foo:9001</job-tracker>
            <name-node>bar:9000</name-node>
            <job-xml>job2.xml</job-xml>
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <join name="joining" to="nextaction"/>
    ...
</workflow-app>
分享到:
评论

相关推荐

    oozie-5.2.1-distro.tar.gz

    Apache Oozie 是一个...总之,"oozie-5.2.1-distro.tar.gz"是一个包含Apache Oozie 5.2.1源代码的压缩包,为开发者和系统管理员提供了深入了解和定制Oozie的机会,从而更好地利用其在大数据处理中的工作流管理能力。

    oozie-branch-4.1.zip

    - **增强的灵活性**:支持更复杂的作业依赖关系和工作流控制,如决策节点、循环和并行执行。 - **安全增强**:Oozie 4.1 引入了 Kerberos 认证支持,提升了系统的安全性。 通过深入研究 Oozie 4.1 源码,开发者...

    oozie-4.1.0.tar.gz

    这些工作流可以通过控制流(如条件分支和循环)进行定制。 2. **协调器**:协调器是Oozie的一个重要组件,它使得工作流可以基于时间或数据可用性触发。例如,可以设置一个协调器作业每天处理新的数据文件。 3. **...

    oozie-4.3.1.tar.gz

    7. 配置Oozie服务器:`bin/oozie-setup.sh sharelib create -fs hdfs://&lt;namenode&gt;:&lt;port&gt;` 8. 启动Oozie服务器:`start-oozie.sh` 五、Oozie使用技巧 1. 工作流设计:熟练掌握DAG(有向无环图)结构,合理规划任务...

    oozie-5.1.0.tar.gz(3)

    oozie-5.1.0.tar.gz 编译结果,受限上传大小,文件分3部分

    oozie-5.0.0.tar.gz

    使用`oozie-5.0.0.tar.gz`压缩包,用户可以获取到完整的Oozie 5.0.0安装包,包括所有必要的文件和配置,以便在自己的Hadoop集群上部署和运行。解压后,按照官方文档的指导进行安装、配置和测试,即可开始享受Oozie...

    oozie-5.1.0.tar.gz(2)

    oozie-5.1.0.tar.gz 编译结果,受限上传大小,文件分3部分

    oozie -4.3.0 .tar for linux.64

    linux.64 下的 oozie-4.3.0.tar.gz 源码包 解压后编译即可 注意对应的版本 cd bin ./mkdistro.sh -Phadoop-2 -Dhadoop.auth.version=2.8.2 -Ddistcp.version=2.8.2 -Dhadoop.version=2.8.2 -Dsqoop.version=1.4.6 -...

    oozie-core-4.3.0.jar

    oozie-core

    oozie-client:nodejs oozie客户端

    oozie-client安装npm安装oozie-client得到帮助节点app.js-帮助选项: -s,--save保存参数-undefined,--cluster hdinsight群集名称(期望值)-undefined,--user用户(期望值)-undefined,--pass password(期望值...

    oozie-4.2.0-distro.tar.gz

    之前公司需要结合hadoop-2.7.2搭建oozie-4.2.0的时候,一直不知从何下手,官网下的包需要结合hadoop版本进行二次编译,手动编译很多次都一直中断, 这个包结合hadoop-2.7.2进行编译的,希望对需要搭建oozie-4.2.0的...

    oozie-5.2.0安装包,实测可用

    oozie-5.2.0安装包,实测可用

    oozie-5.1.0.tar.gz(1)

    oozie-5.1.0.tar.gz 编译结果,受限上传大小,文件分3部分

    安装Oozie4.1.0-CDH版本

    http://archive.cloudera.com/cdh5/cdh/5/oozie-4.1.0-cdh5.5.2.tar.gz 文件较大,1.6G 还需要下载ExjJS,这是扩展的JavaScript的UI桌面框架。 必须是2.2版本的,这是官网指定的,已经写死在oozied.sh中。下载地址:...

    Oozie - The Workflow Scheduler for Hadoop

    Apache Oozie是一款专为管理Hadoop作业而设计的工作流调度系统。作为Hadoop生态系统的重要组件,Oozie允许用户创建包含多个任务的复杂数据处理工作流,并按预设的计划执行。本文将详细阐释Oozie的基本概念、安装配置...

    快速学习-Oozie的使用

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-examples.tar.gz 2)创建工作目录 [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ mkdir oozie-apps/ 3)拷贝任务模板到oozie-apps/目录 [atguigu@hadoop...

    oozie控制台ext jar包.zip

    这通常涉及到将jar文件移动到oozie的lib目录下,如`/usr/hdp/current/oozie-server/server/lib`,并确保oozie服务器的启动脚本能够识别这些新添加的库。 4. 修改oozie配置,可能需要更新oozie服务器的配置文件(如`...

    Oozie-JavaAction

    oozie 提交任务参数传递到下一个任务节点 oozie 提交任务参数传递到下一个任务节点

    oozie-sqoop2

    【oozie-sqoop2】是Apache Oozie的一个扩展,它允许用户在Oozie工作流中直接集成和执行Apache Sqoop2的任务。Oozie是一个工作流调度系统,用于管理和协调Hadoop生态系统中的作业,如MapReduce、Pig、Hive、Spark等。...

    Oozie ext-2.2.zip

    2. **配置Oozie**:根据提供的配置文件或者说明,更新Oozie服务器的配置文件(如oozie-site.xml),以启用新添加的功能。 3. **部署UI扩展**:如果包含Web UI扩展,需要将相关的资源文件复制到Oozie服务器的Web应用...

Global site tag (gtag.js) - Google Analytics