2014-10-30 2 views
3

У меня есть три XML-файла Workflow, такие как WF1 WF2 WF3. Могу ли я связать все эти рабочие процессы в одном координаторе для следующих действий? WF1 зависит от времени. WF2 является зависимым от файла. WF3 не имеет никакого отношения ни к чему.Координатор Oozie, имеющий несколько рабочих процессов

ответ

4

К сожалению, один координатор oozie может иметь только одно действие/рабочий процесс. Он определяется в XML-схеме: Oozie 4.01 CoordinatorFunctionalSpec.html#Oozie_Coordinator_Schema_0.4

<xs:complexType name="COORDINATOR-APP"> 
 
    <xs:sequence> 
 
    ... 
 
    <xs:element name="action" type="coordinator:ACTION" minOccurs="1" maxOccurs="1" /> 
 
    ... 
 
</xs:complexType>

Однако, как запрашивающие указан в разделе комментариев, Oozie действительно обеспечивает способ для объединения рабочих мест координатора вместе. Обратите внимание, что зависимость между заданиями должна управляться пользователем по указанному документу:

Bundle - это абстракция oozie более высокого уровня, которая будет выполнять набор приложений-координаторов. Пользователь сможет запускать/останавливать/приостанавливать/возобновлять/повторять на уровне пучка, что обеспечивает более легкое и оперативное управление.

Более конкретно система oozie Bundle позволяет пользователю определять и выполнять кучу приложений-координаторов, которые часто называют конвейером данных . Не существует явной зависимости между координаторами приложений в пакете. Тем не менее, пользователь может использовать данные зависимостей приложений-координаторов для создания неявного потока данных .

+1

Найдено решение с использованием пучка. В bundle.xml мы можем иметь несколько заданий координатора, с помощью которых можно запускать несколько рабочих процессов. – sunilsurana

+0

Связанная работа помогает управлять жизненным циклом нескольких заданий одним выстрелом. Он не гарантирует выполнение вашего рабочего процесса сам по себе. В вашем случае это не будет работать, если желаемая последовательность выполнения WF1 -> WF2 -> WF3. Позвольте мне отредактировать мой ответ для других пользователей, чтобы получить полную картину. –

+0

Как указывать неявную зависимость? – kfkhalili

1

Нет, вы не можете связать все три рабочих процесса в одном координаторе, но вы можете создать отдельный координатор для каждого рабочего процесса и связать их с помощью пакета.

Чтобы узнать больше, coordinate jobs link

+0

Не можем ли мы использовать вспомогательный поток, как указано в @Clinton? – Kumar

5

Вы не можете связать все три рабочие процессы в одном координатора.

Вместо этого вы можете связать все три рабочих процесса в отдельном XML-файле рабочего процесса с использованием концепции «subworkflow» в oozie. (Все три файла рабочего процесса WF1, WF2, WF3 упоминаются как вспомогательные рабочие процессы в этом родительском файле рабочего процесса)

Затем вы можете использовать файл координатора xml для планирования родительского файла рабочего процесса, чтобы связать все три файла рабочего процесса.

Ссылка: https://bhatnagarankitblog.wordpress.com/2013/11/09/multiple-executions/