Где в Apache Flink хранятся контрольные точки по умолчанию?

Я новичок в Apache Flink, и я просматривал примеры Apache Flink. Я обнаружил, что в случае сбоя Flink имеет возможность восстановить потоковую обработку с контрольной точки.

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);

Теперь у меня вопрос: где Flink сохраняет контрольные точки по умолчанию?

Любая помощь приветствуется!


person himanshuIIITian    schedule 13.05.2018    source источник


Ответы (2)


Flink представляет собой абстракцию StateBackends. StateBackend отвечает за локальное управление состоянием на рабочем узле, а также за контрольную точку (и восстановление) состояния в удаленном месте.

По умолчанию StateBackend - это MemoryStateBackend. Он поддерживает состояние кучи JVM рабочих (TaskManager) и связывает его с кучей JVM ведущего (JobManager). Следовательно, MemoryStateBackend не требует дополнительной настройки или внешней системы и подходит для локальной разработки. Однако он явно не масштабируется и не подходит для любой серьезной рабочей нагрузки.

Flink также предоставляет FSStateBackend, который хранит локальное состояние также в куче JVM рабочих и указывает его на удаленную файловую систему (HDFS, NFS, ...). Наконец, есть также RocksDBStateBackend, который хранит состояние во встроенном хранилище ключей и значений на диске (RocksDB), а также контрольные точки для удаленной файловой системы (HDFS, NFS, ...).

person Fabian Hueske    schedule 14.05.2018
comment
Спасибо за ответ. Но я имел в виду следующее: когда я убиваю приложение Flink (любой из примеров) и перезапускаю его, оно может восстановиться после последнего обработанного сообщения. Итак, когда работает только одна JVM, а она отключается, как работает контрольная точка в памяти? Думаю, он должен что-то сохранить на диске. - person himanshuIIITian; 14.05.2018
comment
На какой источник вы ссылаетесь? Если вы используете Kafka, это, вероятно, связано с зачетами, предоставленными брокерам kafka, а не из-за написания контрольных точек. - person Dawid Wysakowicz; 14.05.2018
comment
@DawidWysakowicz Да, я имею в виду Кафку как источник. - person himanshuIIITian; 14.05.2018
comment
Контрольные точки также включают смещения чтения Kafka (Flink не полагается на собственный механизм фиксации смещения Kafka). Как я уже сказал, контрольные точки хранятся в куче JobManager (мастера). Если этот процесс останавливается, контрольная точка и все состояние теряются. Следовательно, конфигурация по умолчанию не рекомендуется для производственных сценариев использования, и вам следует настроить один из двух других серверных модулей состояния. - person Fabian Hueske; 15.05.2018

Внутреннее состояние по умолчанию - MemoryStateBackend. Это означает, что он хранит текущие данные в JVM диспетчера задач и проверяет их в куче мастера (диспетчера заданий). это хорошо для локальной отладки, но вы потеряете свои контрольные точки, если работа упадет.

Обычно для производства используют FsStateBackend с указанием пути к внешним файловым системам (HDFS, S3 и т. Д.). Он хранит летные данные в JVM диспетчера задач и выполняет контрольные точки во внешней файловой системе.

нравиться

env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));

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

person Mudit bhaintwal    schedule 04.06.2018