2016-07-21 6 views
0

В моем примере использования результат действия координатора используется следующей итерацией, поэтому, если один из них не работает, незаконченные/поврежденные данные передаются в следующее действие координатора.Как приостановить координацию Оози, если действие координатора не удастся?

Есть ли способ приостановить координатор Оози, если один из шагов рабочего процесса в действии координатора не удался?

Например, вместо:

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

Можем ли мы сделать что-то вроде:

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

поэтому ошибка может быть диагностирована до его вывода получает перезаписаны следующего действия координатора?

PS: fs> delete не является фактическим прецедентом здесь, просто пример.

+0

Если ваше действие «Suspend» было действием Shell с бесконечным циклом - например, 'while [[1 -eq 1]]; спать 1 ч; done' - тогда это эффективно приведет к зависанию вашего Workflow; и с параметром « 1», который также заставит координатора зависать. Но это не поймало бы случай, когда Workflow будет убит во время работы. –

+0

Вы также можете создать семафор '_SUCCESS', как и Pig или Spark, в последнем действии вашего рабочего процесса, и чтобы координатор дождался этого семафора с помощью« »; то первое действие следующего прогона Workflow удалит его и т. д. Но это предложение «набора данных» звучит сложнее, гораздо больше, чем это сообщение означает https://github.com/yahoo/oozie/wiki/Oozie-Coord-Use-Cases –

ответ

1

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

Если выход рабочего процесса имеет определенный шаблон, вы можете использовать его и проверить его в начале рабочего процесса.

В противном случае вы всегда можете указать touch файл в качестве последнего действия в рабочем процессе всякий раз, когда он будет успешным, а в случае сбоя удалите (если тот же файл, а не дата). Используйте тот же файл, что и первая проверка вашего рабочего процесса, и действуйте соответствующим образом. Первоначально вам может потребоваться создать файл вручную.

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

Это просто работа вокруг.

+1

Я предполагаю, что это решило бы мою проблему. Благодарю. – slhsen