Mau*_*ino 2 rocksdb apache-flink
我已经阅读了 Flink 关于状态后端的官方文档,这里。特别是,我对RocksDBStateBackend很感兴趣。
我不明白,如果我启用这种后端,RocksDB 是否可以通过 Flink 集群内的另一个节点从TaskManagers访问?
到目前为止,我对 RocksDBStateBackend 的理解是任务管理器将状态存储在它们的内存中,即 JVM 进程的内存中。之后,他们会将状态发送到存储在 RocksDB 中吗?如果是,Flink 集群中的 RocksDB 在哪里?物理上在哪里?
RocksDB 是一个嵌入式数据库。如果你使用 RocksDB 作为 Flink 的状态后端,那么每个任务管理器都有一个 RocksDB 的本地实例,它在 JVM 中作为本机 (JNI) 库运行。使用 RocksDB 时,您的状态作为本地磁盘上的序列化字节存在,并带有内存(堆外)缓存。
检查点时,RocksDB 中的 SST 文件会从本地磁盘复制到存储检查点的分布式文件系统中。如果启用了本地恢复选项,则还会保留本地副本,以加快恢复速度。但是仅依赖本地副本是不安全的,因为如果节点发生故障,本地磁盘可能会丢失。这就是为什么检查点总是存储在分布式文件系统上的原因。
RocksDB 的替代方案是使用基于堆的状态后端之一,在这种情况下,您的状态将作为 JVM 堆上的对象存在。
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |