2

私は自分が望むものに良いツールを使用するかどうか確信が持てません。

依存するワークフローもそうでないワークフローもたくさんあります。

例:

  1. /ワークフロー1
    • /workflow.xml
    • /job.properties
  2. /ワークフロー2
    • /workflow.xml
    • /job.properties
  3. ....

すべてのワークフローを起動できるコーディネーターを (いくつかのデータ条件で) 持つことができると考えました。しかし、それは良い習慣ではないと思い始めています。

すべての実行条件を備えたワークフローごとに 1 つのコーディネーターと、すべてのコーディネーターを起動する 1 つのバンドルを用意する必要がありますか? そのように:

  1. /wf1
    • /workflow.xml
    • /job.properties
    • /coordinator.xml
  2. /wf2
    • /workflow.xml
    • /job.properties
    • /coordinator.xml
  3. /bundle.xml

または、1 人のコーディネーターがすべてのワークフローを開始できますか (依存していてもいなくてもかまいません)?

  1. /wf1
    • /workflow.xml
    • /job.properties
  2. /wf2
    • /workflow.xml
    • /job.properties
  3. /coordinator.xml
4

1 に答える 1

3

場合によります。wf1 と wf2 が論理的に関連しており、頻度が同じで、データセットの依存関係が共通している場合、それらを 1 つのコーディネーターで配置できます (同時に、または次々に実行できます)。しかし、そうでない場合は、別々のコーディネーターに配置することをお勧めします。

sub-workflow次の機能を使用して、1 つのワークフローから複数のワークフローを起動できます。

<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>

フォークを使用するよりも同時に実行したい場合。

于 2015-07-23T10:39:41.033 に答える