Нужна ли контрольная точка при потоковой передаче искры
Я заметил, что у примеров потоковой передачи искомого кода также есть код для контрольной точки. У меня вопрос, насколько важна эта контрольная точка. Если оно существует для отказоустойчивости, как часто возникают сбои в таких потоковых приложениях?
2 ответа
Все зависит от вашего варианта использования. Предположим, вы запускаете потоковое задание, которое просто читает данные из Kafka и подсчитывает количество записей. Что бы вы сделали, если ваше приложение вылетает через год или около того?
- Если у вас нет резервной копии / контрольной точки, вам придется пересчитать все данные за предыдущие годы, чтобы вы могли возобновить подсчет.
- Если у вас есть резервная копия / контрольная точка, вы можете просто прочитать данные контрольной точки и мгновенно возобновить работу.
Или, если все, что вы только что делаете, - это потоковое приложение, которое читает Read-Messages-From-Kafka >>> Tranform >>> Insert-to-a-Database, мне не нужно беспокоиться о сбое моего приложения. Даже если он сломался, я могу просто возобновить свое приложение без потери данных.
Примечание. Чек-наведение - это процесс, в котором хранится текущее состояние искрового приложения.
Принимая во внимание частоту отказоустойчивости, вы почти никогда не сможете предсказать сбой. В компаниях
- Там может быть отключение питания
- регулярное обслуживание / модернизация кластера
надеюсь это поможет.
Есть два случая:
- Вы выполняете операции с состоянием, например updateStateByKey, тогда вы должны использовать контрольные точки - каждое состояние сохраняется. Без установки каталога контрольных точек будет сгенерировано исключение.
- Вы делаете только оконные операции - тогда да, вы можете отключить контрольные точки. Однако я настоятельно рекомендую установить каталог контрольных точек.
Когда драйвер убит, вы потеряете все свои данные и информацию о прогрессе. Контрольная точка поможет вам восстановить приложения из таких ситуаций.
Является ли сбой нормальной ситуацией? Конечно! Представьте, что у вас есть большой кластер, много машин, много компонентов в этих машинах. Если один из этих компонентов выйдет из строя, то ваше приложение также потерпит неудачу. Когда соединение с драйвером потеряно - ваше приложение не работает. С помощью контрольной точки вы можете просто запустить приложение снова, и оно восстановит состояние.