У меня есть потоковое приложение Spark, которое в основном получает триггерное сообщение от Kafka, которое запускает пакетную обработку, которая потенциально может занять до 2 часов.
Были случаи, когда некоторые задания зависали на неопределенный срок и не выполнялись.не выполняются в обычное время, и в настоящее время мы не можем выяснить состояние задания, не проверяя интерфейс Spark вручную.Я хочу иметь способ, где текущие рабочие места искры зависают или нет.Так что, в основном, если он зависает более 30 минут, я хочу уведомить пользователей, чтобы они могли принять меры.Какие у меня есть все варианты?
Я вижу, что могу использовать метрики от водителя и исполнителей.Если бы я выбрал самый важный, это были бы последние полученные записи партии.Когда StreamingMetrics.streaming.lastReceivedBatch_records == 0
это, вероятно, означает, что потоковое задание Spark было остановлено или не выполнено.
Но в моем сценарии я получу только 1 событие запуска потоковой передачи, а затем начнется обработка, которая может занять до 2часов, поэтому я не смогу положиться на полученные записи.
Есть ли лучший способ?TIA