是否可以用一个协调器启动一些oozie工作流?

oalqel3c  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(698)

我不确定用这个好工具做什么。
我有很多工作流程,可以依赖或不依赖。
例如:
/工作流1
/工作流.xml
/作业属性
/工作流2
/工作流.xml
/作业属性
....
我认为我们可以有一个corrdinator,它可以启动(在某些数据条件下)所有工作流。但我开始认为这不是好的做法。
我们是否应该在每个工作流中有一个具有所有执行条件的协调器+一个启动所有协调器的包?就像这样:
/wf1公司
/工作流.xml
/作业属性
/协调器.xml
/wf2型
/工作流.xml
/作业属性
/协调器.xml
/bundle.xml文件
或者一个协调员可以启动所有工作流(它们可以是依赖的,也可以不是依赖的)?
/wf1公司
/工作流.xml
/作业属性
/wf2型
/工作流.xml
/作业属性
/协调器.xml

v09wglhw

v09wglhw1#

视情况而定。如果wf1和wf2在逻辑上是相关的,具有相同的频率,并且具有共同的数据集依赖关系,那么可以将它们放在一个协调器中(并同时或一个接一个地运行它们)。但如果他们不是,最好把他们放在不同的协调员。
您可以使用 sub-workflow 特点:

<workflow-app name="root-workflow" xmlns="uri:oozie:workflow:0.4">
    <start to="run-wf1"/>
    <action name="run-wf1">
        <sub-workflow>
            <app-path>${appPath}/wf1.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="run-wf2"/>
        <error to="kill"/>
    </action>
    <action name="run-wf2">
        <sub-workflow>
            <app-path>${appPath}/wf2.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

如果你想同时运行它们而不是使用分叉。

相关问题