OOzie периодически убивает работу

У меня есть Java-программа с бесконечным циклом, которую я хочу запустить в определенное время, а также убить через два часа, я могу запустить программу, и она продолжает работать, пока я не убью ее вручную, есть ли способ в Oozie(hue) где работу можно начинать и периодически убивать?

2 ответа

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

Тем не менее, путь здесь может быть следующим:

Передайте конечное время вашему циклу (или оболочке вашего цикла)

E сть <timeout> опция в Oozie Coordinator... но название сбивает с толку: на самом деле, эта опция не относится к запущенному заданию.

Я использовал обходной путь для аналогичного требования: просто сообщите программе, когда она должна остановиться!

  • в Координаторе сгенерируйте параметр Workflow с желаемым временем окончания для этого выполнения, например, "номинальное время начала +55 минут", т.е. ${coord:formatTime(coord:dateOffset(coord:nominalTime(), 55, 'MINUTE'), 'yyyy-MM-dd HH:mm:ss z')}
  • в рабочем процессе передайте этот параметр в качестве аргумента вашей Java-программе
  • в программе Java найдите способ учесть этот желаемый аргумент конечного времени - т.е. если вы запустите бесконечный цикл, тогда break когда текущее время превышает лимит, в противном случае разветвить выделенный поток с бесконечным циклом с брутальным System.exit(), так далее.
Другие вопросы по тегам