如何在apacheflink中将checkpoint存储到远程RocksDB中


0

我知道apacheflink中有三种状态后端:MemoryStateBackend、FsStateBackend和RocksDBStateBackend。

MemoryStateBackend将 checkpoints存储到 localRAM中,FsStateBackend将 checkpoints存储到 local文件系统中,RocksDBStateBackend将 checkpoints存储到RocksDB中。我有一些关于RocksDBStateBackend的问题。

据我所知,RocksDBStateBackend的机制已经嵌入到apacheflink中。rocksDB是一种 key值DB。如果我是对的,这意味着Flink将把所有 checkpoints存储到使用 local磁盘的嵌入式rocksDB中。

如果是这样,我认为在某些情况下磁盘可能会耗尽,因为存储在rocksDB中的 checkpoints。现在我在想是否可以配置一个远程rocksDB来存储这些 checkpoints?如果可能的话,我们是否应该担心远程rocksDB会崩溃?如果远程rocksDB崩溃,Flink的 job 就不能继续 job 了,对吗?

2 答案


0

在Apache Flink中没有使用外部或远程RocksDB的选项。RocksDB是一个嵌入的 key值存储,每个任务管理器中都有一个 local实例。

几点:

    Flink在 job 状态(通常是 local的)和状态快照( checkpoints和保存点)之间做了很大的区分,后者总是 local的(为了可靠性,它们应该存储在分布式文件系统中)。

您希望将RocksDB配置为使用最快的可用 local文件系统。尝试使用 local join的ssd,并避免网络 join存储(如EBS)。不要尝试使用像S3这样的分布式文件系统作为RocksDB的 local存储。

state.backend.rocksdb.localdir控制每个 localRocksDB存储其 job 状态的位置。

RocksDBStateBackend构造函数的参数控制 checkpoints的存储位置。E、 g.使用@ezequiel推荐的S3是AWS的明显选择。


0

RocksDB可以使用Flink支持的任何文件系统

如果您运行的是Flink,那么您可能需要 checkpoints,然后从它们恢复。

我将把存储外部化。如果您使用的是像AWS这样的云提供商,那么S3是正确的选择。

所以你应该写一些东西,比如:

请检查以上文档以正确配置文件系统。


我来回答

写文章

提问题

面试题