У меня есть один координатор oozie и рабочие задания, Когда мое одно из действий рабочего процесса завершено, мне нужно начать следующее действие через некоторое время, скажем, 50 минут. Могу ли я настроить это из рабочего процесса oozie или координатора oozie, чтобы подождать некоторое время для выполнения следующего действия (в зависимости от предыдущего действия и некоторой асинхронной задачи, начатой предыдущим).как отложить действие рабочего процесса с координатором oozie
координатор 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>
Как я архивировать, что с oozie framwork, я могу это сделать с помощью Java действие с Thread.sleep (50 * 60 * 1000) , лучший способ сделать с oozie?
в этом случае мне нужно, чтобы УПП/скопировать скрипт для каждого узла, как oozie работа может выполняться на любой доступный узел или просто поместить его в oozie.libpath будет хорошо? Есть ли другой способ? настройки некоторых конфигураций в координаторе? Спасибо за ваш ответ . –
Вам не нужно копировать сценарий оболочки на каждый узел. Вам нужно скопировать его в HDFS (вы можете использовать команду copyFromLocal) и сообщить Oozie, где находится скрипт. Я не думаю, что есть другой способ сделать это с помощью Оози. Оози - простое обслуживание. Возможно, вам стоит проверить Apache NiFi или StreamSets. –
@MateuszGrabowski ответ в порядке, но будет здорово, если скрипт получит сумму и единицы извне скрипта = делает его более общим и может быть повторно использован – Mzf