Ich habe einen Oozie-Koordinator und Workflow-Jobs, wenn meine Workflow-Aktion abgeschlossen ist, muss ich nächste Aktion nach einiger Zeit sagen 50 Minuten sagen. Kann ich das von Oozie Workflow oder Oozie Koordinator konfigurieren, um einige Zeit zu warten, um die nächste Aktion auszuführen (abhängig von vorheriger Aktion und etwas Async-Aufgabe, die vorher gestartet wurde).wie Workflow-Aktion mit Oozie-Koordinator zu verzögern
Koordinator xml
<coordinator-app name="ods-ds-cms-coordinator" start="${startTime}" end="${endTime}"
frequency="${coord:days(1)}" timezone="${timeZone}" xmlns="uri:oozie:coordinator:0.5">
<action>
<workflow>
<app-path>${exampleDir}/ods-ds-cms-workflow.workflow</app-path>
<configuration>
<property>
<name>nameNode</name>
<value>${nameNode}</value>
</property>
<property>
<name>jobTracker</name>
<value>${jobTracker}</value>
</property>
<property>
<name>exampleDir</name>
<value>${nameNode}/custom/oozie</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>
workflow.xml
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="ods-ds-cms-workflow.workflow">
<global>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queue}</value>
</property>
</configuration>
</global>
<start to="cms-checker"/>
<action name="cms-checker">
<java>
<main-class>com.insense.helper.CMSPullChecker</main-class>
<arg>${cmsChecker}</arg>
<arg>${cmsType}</arg>
<capture-output/>
</java>
<ok to="trigger_next_job"/>
<error to="kill"/>
</action>
<action name="trigger_next_job"> // need to start this after some time
<sub-workflow>
<app-path>${exampleDir}/ods-ds-bank.workflow</app-path>
<propagate-configuration/>
</sub-workflow>
<ok to="end"/>
<error to="kill"/>
</action>
Wie kann ich mit Oozie framwork archivieren, dass, ich kann mit Thread.sleep (50 * 60 * 1000), um diese mit Java Aktion zu tun , ist besserer Weg mit Oozie zu tun?
in diesem Fall muss ich scp/Shell-Skript zu jedem Knoten kopieren, wie Oozie Job auf jedem verfügbaren laufen kann Knoten oder nur auf oozie.libpath platzieren wird in Ordnung sein? Gibt es einen anderen Weg? Einstellungen einige Konfigurationen im Koordinator? Vielen Dank für Ihre Antwort . –
Sie müssen das Shell-Skript nicht auf jeden Knoten kopieren. Sie müssen es in HDFS kopieren (Sie können den Befehl copyFromLocal verwenden) und Oozie mitteilen, wo sich das Skript befindet. Ich glaube nicht, dass es andere Wege gibt, Oozie zu benutzen. Oozie ist ein einfacher Service. Vielleicht solltest du Apache NiFi oder StreamSets überprüfen. –
@MateuszGrabowski Die Antwort ist in Ordnung, aber es wird großartig sein, wenn das Skript die Menge und die Einheiten von außerhalb des Skripts erhält, was es generischer macht und wiederverwendet werden kann – Mzf