2016-08-01 21 views
0

Ich versuche zu verstehen, warum ein auf Oozie 4.2 basierender Koordinatorjob, der auf ein Dataset warten sollte, mehrere Male ausgelöst wird. Mein Koordinator Job wie folgt aussiehtOozie Koordinator - Datei ereignisbasierter Auslöser - mehrfaches Schießen

<coordinator-app name="ConfirmDataMasterTrigger" 
      frequency="${frequencyMins}" 
      start="${startTime}" 
      end="${endTime}" 
      timezone="${timeZoneDef}" 
      xmlns="uri:oozie:coordinator:0.4" 
      xmlns:sla="uri:oozie:sla:0.2"> 
    <controls> 
      <timeout>${TimeOutMins}</timeout> 
      <concurrency>${Concurrency}</concurrency> 
      <execution>${Execution}</execution> 
    </controls> 
    <datasets> 
      <dataset name="inputDS" 
        frequency="${coord:days(1)}" 
        initial-instance="${startTime}" 
        timezone="${timeZoneDef}"> 

        <uri-template>${triggerFileDir}</uri-template> 
        <done-flag></done-flag> 
      </dataset> 
    </datasets> 
    <input-events> 
      <data-in name="ConfirmDataMasterTrigInput" 
        dataset="inputDS"> 
        <instance>${coord:current(0)}</instance> 
      </data-in> 
    </input-events> 
    <action> 
      <workflow> 
        <app-path>${workflowAppPath}</app-path> 
        <configuration> 
         <property> 
         <name>SaveDateString</name> 
         <value>${coord:formatTime(coord:actualTime(),"-yyyyMMdd-HHmmss")}</value> 
         </property> 
         <property> 
         <name>WaitForThisInputData</name> 
         <value>${coord:dataIn('ConfirmDataMasterTrigInput')}</value> 
         </property> 
        </configuration> 
      </workflow> 
    </action> 

Mit einer Properties-Datei, die wie dies Ich in immer einen Arbeitsablauf, um ein Problem bin nicht mit

nameNode=hdfs://hc1m1.nec.co.nz:8020 
jobTracker=hc1r1m2.nec.co.nz:8050 
hdfsUser=oozie 
wfProject=ConfirmDataMaster 
oozie.libpath=${nameNode}/user/oozie/share/lib 
oozie.use.system.libpath=true 
oozie.wf.rerun.failnodes=true 
moveFile=ConfirmDataMaster_edit.csv 
sourceDir=${nameNode}/mule/sheets/input/ConfirmDataMaster/ 
targetDir=/mule/sheets/store/ 
sourceFile=${sourceDir}${moveFile} 
targetFile=${targetDir}${moveFile} 
frequencyMins=10 
startTime=2016-07-31T12:00Z 
endTime=2099-01-01T12:00Z 
timeZoneDef=GMT+12:00 
TimeOutMins=10 
Concurrency=1 
Execution=FIFO 
triggerDir=trigger/ 
triggerFileDir=${sourceDir}${triggerDir} 
doneFlag=trigger.dat 
workflowAppPath=${nameNode}/user/${hdfsUser}/wf/${wfProject} 
oozie.coord.application.path=${nameNode}/user/${hdfsUser}/wf/${wfProject} 

sieht durch ein ausgelöst werden Koordinator bei einem datensatzbasierten Ereignis. Was ich sehe ist, dass der zugrunde liegende Workflow kontinuierlich ausgelöst wird. Kann jemand Änderungen empfehlen, die ich machen sollte oder mein Fehler? Offensichtlich räumt mein Workflow auf und löscht den Triggerpfad. Danke im Voraus.

Antwort

0

Ich beantworte meine eigene Frage, weil ich die Lösung erarbeitet habe und es ist ein bisschen offensichtlich, wirklich. Ich war nur ein bisschen verwirrt. Die Zündfrequenz wird durch die Koordinator- und Datensatzfrequenzen sowie das Triggerverzeichnis und die Triggerdatei gesteuert. Wenn Sie keine Triggerdatei wünschen, lassen Sie done-flag leer. Wenn das nicht hinzugefügt wird, ist eine Standard-Flag-Datei _SUCCESS.

Wenn also der Trigger verfügbar ist, wird der Workflow mit den angegebenen Frequenzen ausgelöst. Also habe ich meine Kabel- und Datensatz-Frequenzen auf 30 (Minuten) geändert. Als letzte Aufgabe entfernt mein Workflow den Auslöser.