Нужна ли контрольная точка при потоковой передаче искры

Я заметил, что у примеров потоковой передачи искомого кода также есть код для контрольной точки. У меня вопрос, насколько важна эта контрольная точка. Если оно существует для отказоустойчивости, как часто возникают сбои в таких потоковых приложениях?

2 ответа

Решение

Все зависит от вашего варианта использования. Предположим, вы запускаете потоковое задание, которое просто читает данные из Kafka и подсчитывает количество записей. Что бы вы сделали, если ваше приложение вылетает через год или около того?

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

Или, если все, что вы только что делаете, - это потоковое приложение, которое читает Read-Messages-From-Kafka >>> Tranform >>> Insert-to-a-Database, мне не нужно беспокоиться о сбое моего приложения. Даже если он сломался, я могу просто возобновить свое приложение без потери данных.

Примечание. Чек-наведение - это процесс, в котором хранится текущее состояние искрового приложения.

Принимая во внимание частоту отказоустойчивости, вы почти никогда не сможете предсказать сбой. В компаниях

  • Там может быть отключение питания
  • регулярное обслуживание / модернизация кластера

надеюсь это поможет.

Есть два случая:

  1. Вы выполняете операции с состоянием, например updateStateByKey, тогда вы должны использовать контрольные точки - каждое состояние сохраняется. Без установки каталога контрольных точек будет сгенерировано исключение.
  2. Вы делаете только оконные операции - тогда да, вы можете отключить контрольные точки. Однако я настоятельно рекомендую установить каталог контрольных точек.

Когда драйвер убит, вы потеряете все свои данные и информацию о прогрессе. Контрольная точка поможет вам восстановить приложения из таких ситуаций.

Является ли сбой нормальной ситуацией? Конечно! Представьте, что у вас есть большой кластер, много машин, много компонентов в этих машинах. Если один из этих компонентов выйдет из строя, то ваше приложение также потерпит неудачу. Когда соединение с драйвером потеряно - ваше приложение не работает. С помощью контрольной точки вы можете просто запустить приложение снова, и оно восстановит состояние.

Другие вопросы по тегам