Апач Флинк: Где хранятся штаты? - PullRequest
0 голосов
/ 27 мая 2018

Я получил следующее заявление:

"В зависимости от вашего внутреннего состояния, Flink может также управлять состоянием приложения, что означает, что Flink имеет дело с управлением памятью (возможно, выливая на диск при необходимости)чтобы позволить приложениям держать очень большое состояние. "

https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/state_backends.html

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

Однако, если настроено на MemoryStateBackend или FsStateBackend, состояние сохраняется только в памяти и никогда не выливается на диск.

1 Ответ

0 голосов
/ 27 мая 2018

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

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

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

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

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

...