如何在oozie bundle中运行多个协调器

时间:2015-11-13 06:50:16

标签: file-io dataset bundle oozie-coordinator

我在oozie捆绑中更新鲜。我想在bundle job中一个接一个地运行多个协调器。我的要求是在完成一个协调器作业后生成_SUCCESS文件,然后通过使用该_SUCCESS文件应该触发第二个协调器。我不知道该怎么做。为此我使用了数据依赖技术,它将跟踪前一个协调器生成的输出文件。我分享了一些我尝试过的代码。

让我们说有2个协调员工作:A和B.我想只触发A协调员。如果生成协调员A的_SUCCESS文件,那么只有协调员B才能启动。

A - coordinator.xml

<workflow>

    <app-path>${aDir}/aWorkflow</app-path>      

</workflow>

这将调用相应的workflow.and _SUCCESS文件在$ {aDir} / aWorkflow / final_data / $ {date} / aDim位置生成,所以我将此位置包含在 B协调员:

  <dataset name="input1" frequency="${freq}" initial-instance="${START_TIME1}" timezone="UTC">

     <uri-template>${aDir}/aWorkflow/final_data/${date}/aDim</uri-template>

  </dataset>

  <done-flag>_SUCCESS</done-flag>   

   

  <data-in name="coordInput1" dataset="input1">

      <instance>${START_TIME1}</instance>

  </data-in>

  <workflow>

     <app-path>${bDir}/bWorkflow</app-path>

  </workflow>

但是当我运行它时,第一个协调器本身会被杀死,但是如果我单独运行它们就会成功运行。我不知道为什么这些都被杀死了。 帮助整理

1 个答案:

答案 0 :(得分:2)

我找到了简单的方法。我正在共享解决方案。对于协调员B coordinator.xml,我正在分享。 1)对于数据集实例应该是第二个的开始时间,但它不应该是第一个协调器的时间实例。否则特定协调器将被杀死。 2)如果要一个接一个地运行多个协调器,那么您还可以在coordinator.xml中包含控件。例如并发,超时或限制。有关这些控件的详细信息,请参阅&#34; apache oozie&#34;书的第6章。 3)在&#34;&#34;我包括最新的(0)它将在提到的输出路径中采取最新生成的文件夹。 4)对于&#34;输入事件&#34;必须将其名称作为$ {coord:dataIn(&#39; coordInput1&#39;)}的输入包含在内。否则oozie将不会考虑数据集。

             三十         1                                $ {} aimDir / aDimWorkflow / final_data / $ {日期和时间} / ADIM         _成功                                     $ {坐标:最新的(0)}
                                        $ {} bDir / bWorkflow                                                   input_files                     $ {坐标:DATAIN(&#39; coordInput1&#39;)}