RocksDBStateBackend во Flink: как это работает точно? - PullRequest
1 голос
/ 31 октября 2019

Я прочитал официальную документацию Флинка о государственных Backends, здесь . В частности, меня интересовал RocksDBStateBackend .

Я не понимаю, если я включу этот вид бэкэнда, RocksDB будет доступен из TaskManager через другойузел внутри кластера Флинка?

Что я понял до сих пор о RocksDBStateBackend, так это то, что диспетчеры задач будут хранить состояния в своей памяти, то есть в памяти процесса JVM. После этого они отправят состояния для хранения внутри RocksDB? Если да, где RocksDB внутри кластера Флинка? Где это физически?

1 Ответ

3 голосов
/ 31 октября 2019

RocksDB является встроенной базой данных. Если вы используете RocksDB в качестве бэкэнда состояния для Flink, то у каждого менеджера задач есть локальный экземпляр RocksDB, который работает как собственная (JNI) библиотека внутри JVM. При использовании RocksDB ваше состояние живет как сериализованные байты на локальном диске с кэшем в оперативной памяти (вне кучи).

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

Альтернативой RocksDB является использование одного из серверных состояний состояния кучи, и в этом случае ваше состояние будет жить как объекты в куче JVM.

...