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.
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 concurrency>' 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. –
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 –