rocksdbstatebend:它到底是如何工作的?

nfeuvbwi  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(326)

我在这里读过Flink官方关于州后台的文件。特别是,我对rocksdbstatebackend感兴趣。
我不明白,如果我启用这种后端,rocksdb可以通过flink集群中的另一个节点从taskmanagers访问吗?
到目前为止,我对rocksdbstatebend的理解是任务管理器将状态存储在它们的内存中,即jvm进程的内存中。在那之后,他们会把这些州储存在rocksdb里面吗?如果是的话,在Flink星系团里,洛克SDB在哪里?它在哪里?

hm2xizp9

hm2xizp91#

rocksdb是一个嵌入式数据库。如果您使用rocksdb作为flink的状态后端,那么每个任务管理器都有一个rocksdb的本地示例,它在jvm中作为本机(jni)库运行。使用rocksdb时,您的状态在本地磁盘上以序列化字节的形式存在,并带有内存(堆外)缓存。
在检查点期间,来自rocksdb的sst文件从本地磁盘复制到存储检查点的分布式文件系统。如果启用了“本地恢复”选项,则还将保留本地副本,以加快恢复速度。但是仅仅依赖本地副本是不安全的,因为如果节点发生故障,本地磁盘可能会丢失。这就是为什么检查点总是存储在分布式文件系统上。
rocksdb的替代方法是使用一个基于堆的状态后端,在这种情况下,您的状态将作为jvm堆上的对象存在。

相关问题