是否有可能只用一个协调员来实现一些oozie工作流程?

时间:2015-07-23 09:31:17

标签: hadoop workflow bundle oozie oozie-coordinator

我不确定如何使用这个好工具。

我有很多可以依赖的工作流程。

例如:

  1. / workflow1
    • /workflow.xml
    • /job.properties
  2. / workflow2
    • /workflow.xml
    • /job.properties
  3. ....
  4. 我认为我们可以拥有一个可以启动(有一些数据条件)所有工作流程的corrdinator。但我开始认为这不是好的做法。

    我们是否应该为每个工作流程配备一个协调员,其中包含所有执行条件+一个启动所有协调员的捆绑包?那样:

    1. / WF1
      • /workflow.xml
      • /job.properties
      • /coordinator.xml
    2. / WF2
      • /workflow.xml
      • /job.properties
      • /coordinator.xml
    3. /bundle.xml
    4. 或者一个协调员可以启动所有工作流程(他们可以依赖或不依赖)?

      1. / WF1
        • /workflow.xml
        • /job.properties
      2. / WF2
        • /workflow.xml
        • /job.properties
      3. /coordinator.xml

1 个答案:

答案 0 :(得分:3)

这取决于。如果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>

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