Я заметил, что в примерах потоковой передачи искры также есть код для контрольных точек. Мой вопрос в том, насколько важен этот контрольно-пропускной пункт. Если это связано с отказоустойчивостью, как часто возникают сбои в таких потоковых приложениях?
Нужны ли контрольные точки в искровом потоке?
Ответы (2)
Все зависит от вашего варианта использования. Предположим, вы выполняете потоковое задание, которое просто считывает данные из Kafka и подсчитывает количество записей. Что бы вы сделали, если бы ваше приложение вышло из строя через год или около того?
- Если у вас нет резервной копии/контрольной точки, вам придется пересчитать все данные за предыдущий год, чтобы вы могли возобновить подсчет.
- Если у вас есть резервная копия/контрольная точка, вы можете просто прочитать данные контрольной точки и немедленно возобновить работу.
Или, если все, что вы делаете, — это потоковое приложение, которое просто Читает-Сообщения-От-Кафки >>> Преобразовывает >>> Вставляет-в-базу данных, мне не нужно беспокоиться о моем приложении. сбой. Даже в случае сбоя я могу просто возобновить работу приложения без потери данных.
Примечание. Контрольные точки — это процесс, в котором сохраняется текущее состояние искрового приложения.
Что касается частоты отказоустойчивости, то почти никогда нельзя предсказать сбой. В компаниях,
- Возможно отключение электричества
- регулярное обслуживание/обновление кластера
надеюсь это поможет.
Есть два случая:
- Вы выполняете операции с отслеживанием состояния, такие как updateStateByKey, тогда вы должны использовать контрольные точки — каждое состояние сохраняется. Без указания каталога контрольной точки будет выдано исключение.
- Вы делаете только оконные операции - тогда да, вы можете отключить контрольные точки. Однако я настоятельно рекомендую установить каталог контрольных точек.
Когда водитель убит, вы потеряете все свои данные и информацию о прогрессе. Контрольные точки помогают восстановить приложения из таких ситуаций.
Является ли отказ нормальной ситуацией? Конечно! Представьте, что у вас большой кластер, много машин, много компонентов в этих машинах. Если один из этих компонентов выйдет из строя, ваше приложение также выйдет из строя. Когда связь с драйвером потеряна - ваше приложение не работает. С помощью контрольной точки вы можете просто снова запустить приложение, и оно восстановит свое состояние.