Flink中的RocksDBStateBackend:它是如何工作的?

问题描述 投票:0回答:1

我已经阅读了Flink的官方文档,其中涉及国家后端here。特别是,我对RocksDBStateBackend

感兴趣。

我不明白,如果启用了这种后端,可以通过Flink集群内的另一个节点从TaskManagers访问RocksDB?

到目前为止,我对RocksDBStateBackend的了解是,任务管理器会将状态存储在其内存中,即JVM进程的内存中。之后,他们将发送状态存储在RocksDB中吗?如果是,Flink集群中的RocksDB在哪里?物理上在哪里?

apache-flink rocksdb
1个回答
1
投票

RocksDB是嵌入式数据库。如果您将RocksDB用作Flink的状态后端,则每个任务管理器都有一个RocksDB本地实例,该实例作为JVM中的本机(JNI)库运行。使用RocksDB时,您的状态以本地字节的形式存在于本地磁盘上,并带有内存缓存。

在检查点期间,RocksDB的SST文件从本地磁盘复制到存储检查点的分布式文件系统。如果启用了本地恢复选项,则还将保留本地副本,以加快恢复速度。

RocksDB的替代方法是使用基于堆的状态后端之一,在这种情况下,您的状态将作为JVM堆上的对象存在。

© www.soinside.com 2019 - 2024. All rights reserved.