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()
, так далее.