2016-07-21 2 views
0

In meinem Anwendungsfall wird die Ausgabe einer Coordinator-Aktion von der nächsten Iteration verwendet. Wenn einer von ihnen fehlschlägt, werden unfertige/beschädigte Daten in die nächste Koordinatoraktion eingespeist.Wie kann man den Oozie-Koordinator sperren, wenn eine Koordinatoraktion fehlschlägt?

Gibt es eine Möglichkeit, einen Oozie-Koordinator zu sperren, wenn einer der Arbeitsablaufschritte in einer Koordinatoraktion fehlschlägt?

Zum Beispiel statt:

<action name="Delete_TMP_Files"> 
    <fs> 
    <delete path='${outputPath}*'/> 
    </fs> 
    <ok to="End"/> 
    <error to="Kill"/> 
</action> 

Können wir so etwas wie:

<action name="Delete_TMP_Files"> 
    <fs> 
    <delete path='${outputPath}*'/> 
    </fs> 
    <ok to="End"/> 
    <error to="Suspend"/> 
</action> 

so kann der Fehler diagnostiziert werden, bevor dessen Ausgang bis zum nächsten Koordinator Aktion überschrieben wird?

PS: fs> löschen ist hier nicht der eigentliche Anwendungsfall, nur ein Beispiel.

+0

Wenn Ihre "Suspend" -Aktion eine Shell-Aktion mit einer Endlosschleife war - z. 'während [[1-eq 1]]; Schlaf 1h; fertig "- dann würde Ihr Workflow effektiv hängen bleiben. und mit einer Koordinator ' 1' Option würde das auch den Koordinator hängen lassen. Aber das würde den Fall nicht erfassen, in dem der Arbeitsablauf beim Ausführen getötet wird. –

+0

Sie könnten auch eine Art '_SUCCESS'-Semaphor, genau wie Pig oder Spark, in der letzten Aktion Ihres Workflows erstellen - und den Koordinator auf diesen Semaphor mit einer' '-Klausel warten lassen; dann würde die erste Aktion des nächsten Workflow-Laufs es löschen, und so weiter. Aber diese "Dataset" -Klausel klingt kompliziert, viel mehr, als dieser Beitrag impliziert https://github.com/yahoo/oozie/wiki/Oozie-Coord-Use-Cases –

Antwort

1

Sie können einen Koordinator nicht basierend auf dem Ausfall eines Workflows aussetzen (aus der Koordinatoraktion).

Wenn die Ausgabe des Workflows ein bestimmtes Muster aufweist, können Sie diese verwenden und am Anfang des Workflows überprüfen.

Andernfalls können Sie immer eine Datei als letzte Aktion in den Workflow touch, wenn es erfolgreich ist und im Fehlerfall löschen (wenn dieselbe Datei, nicht datumsbasiert). Verwenden Sie die gleiche Datei wie die erste Überprüfung in Ihrem Workflow und fahren Sie entsprechend fort. Zu Beginn müssen Sie die Datei möglicherweise manuell erstellen.

Sie können die E-Mail-Aktion im Falle eines Fehlers verwenden und benachrichtigt werden.

Dies ist nur eine Arbeit.

+1

Ich denke, das würde mein Problem lösen. Vielen Dank. – slhsen

Verwandte Themen