Где хранятся контрольные точки по умолчанию в Apache Flink?
Я новичок в Apache Flink, и я изучал примеры Apache Flink. Я обнаружил, что в случае сбоя Flink имеет возможность восстановить потоковую обработку с контрольной точки.
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(10000L);
Теперь мой вопрос: где Flink хранит контрольные точки по умолчанию?
Любая помощь приветствуется!
2 ответа
Flink представляет абстракцию StateBackends. StateBackend
отвечает за локальное управление состоянием на рабочем узле, а также за проверку (и восстановление) состояния в удаленном местоположении.
По умолчанию StateBackend
это MemoryStateBackend
, Он поддерживает состояние в куче JVM рабочих (TaskManager) и устанавливает его в куче JVM мастера (JobManager). Следовательно MemoryStateBackend
не требует никакой дополнительной настройки или внешней системы и хорош для локальной разработки. Однако он явно не масштабируется и подходит для любой серьезной рабочей нагрузки.
Флинк также обеспечивает FSStateBackend
, который хранит локальное состояние также в рабочей куче JVM и проверяет его на удаленную файловую систему (HDFS, NFS, ...). Наконец, есть также RocksDBStateBackend
, который хранит состояние во встроенном хранилище значений ключей на диске (RocksDB), а также контрольные точки для удаленной файловой системы (HDFS, NFS, ...).
Конечным состоянием по умолчанию является MemoryStateBackend. Означает, что он сохраняет данные в полете в JVM диспетчера задач и проверяет их в куче мастера (менеджера заданий). это хорошо для локальной отладки, но вы потеряете свои контрольные точки, если работа упадет.
Обычно для производства используют FsStateBackend с указанием пути к внешним файловым системам (HDFS,S3 и т. Д.). Он сохраняет данные о рейсах в JVM диспетчера задач и проверяет их во внешней файловой системе.
лайк
env.setStateBackend(new FsStateBackend("file:///apps/flink/checkpoint"));
При желании можно также настроить небольшой метафайл, указывающий на хранилище состояний для высокой доступности.