Flink如何使用RocksDB后端异步进行检查点?

3
我正在使用带有RocksDB的Flink。从Flink文档中可以了解到,当使用RocksDB后端时,Flink将异步地进行检查点。请参阅其文档中的说明。
引用内容如下:
“当一个运算符存储其状态快照时,可以让该运算符继续处理,从而在后台异步进行状态快照。为此,运算符必须能够生成应该以某种方式存储的状态对象,使得对运算符状态的进一步修改不会影响该状态对象。例如,像RocksDB中使用的写时复制数据结构就具有这种行为。”
据我理解,当需要进行检查点时,运算符将为Rocksdb执行以下步骤:
1. 刷新memtable中的数据 2. 将包含RocksDB中所有数据的数据库文件夹复制到另一个临时文件夹中。 3. 上传已复制的数据到远程Fs系统(在此步骤中是异步的)。
我的理解正确吗?还是有人能帮助说明一下细节?
非常感谢,因为我找不到任何文档来描述细节。
1个回答

3

在一篇博客中找到了提及此过程的内容:

为此,Flink 触发了 RocksDB 中的一次 flush,将所有 memtable 强制转换为位于磁盘上的 sstable,并在本地临时目录中进行硬链接。这个过程是同步进行的,与处理管道相应,而 Flink 执行所有进一步操作的异步操作,并不会阻塞处理。

有关更多详细信息,请参见以下链接:增量检查点


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接