Нужны ли контрольные точки в искровом потоке?

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


person pythonic    schedule 20.09.2016    source источник
comment
Насколько важны контрольные точки, зависит только от ваших требований и бизнес-логики. Если вы хотите выполнять операции с отслеживанием состояния, вы не можете принять потерю данных, это обязательно, в противном случае это необязательно. Если у вас есть несколько узлов, сбои маловероятны (это не значит, что вы не должны готовиться к одному), если у вас тысячи, вы можете ожидать сбои ежедневно. И проблемы с программным обеспечением вдобавок ко всему.   -  person zero323    schedule 20.09.2016


Ответы (2)


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

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

Или, если все, что вы делаете, — это потоковое приложение, которое просто Читает-Сообщения-От-Кафки >>> Преобразовывает >>> Вставляет-в-базу данных, мне не нужно беспокоиться о моем приложении. сбой. Даже в случае сбоя я могу просто возобновить работу приложения без потери данных.

Примечание. Контрольные точки — это процесс, в котором сохраняется текущее состояние искрового приложения.

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

  • Возможно отключение электричества
  • регулярное обслуживание/обновление кластера

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

person avrsanjay    schedule 20.09.2016

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

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

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

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

person T. Gawęda    schedule 21.09.2016