Пазлы для Flink State Backends

Я получил следующее утверждение: "В зависимости от вашего внутреннего состояния, Flink может также управлять состоянием приложения, то есть Flink имеет дело с управлением памятью (возможно, при необходимости выливаясь на диск), чтобы приложения могли поддерживать очень большое состояние". https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/state_backends.html

Означает ли это, что только когда состояние бэкэнда настроено на RocksDBStateBackend, состояние будет храниться в памяти и, возможно, вылиться на диск при необходимости? Однако, если сконфигурировано для MemoryStateBackend\FsStateBackend, состояние сохраняется только в памяти и невозможно выплеснуть на диск, верно?

1 ответ

Решение

Да в общем ты прав. Только с RocksDBStateBackend там будет проливать данные на диск.

В случае обоих MemoryStateBackend а также FsStateBackend состояние всегда сохраняется в памяти TaskManager и, следовательно, должно соответствовать ему. Разница между этими двумя бэкэндами заключается в том, как они проверяют данные.

  • В случае MemoryStateBackend данные контрольной точки отправляются в JobManager и хранятся там же в памяти.

  • FsStateBackend сохраняет данные по контрольной точке в FileSystem и отправляет только небольшие метаданные в JobManager (или в хранилище сценариев HA в папке метаданных)

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

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