首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RocksDB的Flink状态

使用RocksDB的Flink状态
EN

Stack Overflow用户
提问于 2022-01-28 22:21:55
回答 1查看 163关注 0票数 0

在Flink作业中使用RocksDB存储操作符状态检查点与使用RocksDB作为缓存(而不是Redis之类的缓存)有什么区别?我需要将处理过的数据从Flink作业存储到缓存24小时,并根据这些数据在流作业中执行一些计算。数据必须在24小时后删除。RocksDB可以用于这个目的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-30 10:25:18

RocksDB在Flink中所扮演的角色并不是真正的检查点存储或缓存。检查点存储必须是可靠的,并且能够存活故障;Flink不依赖RocksDB来生存故障。在检查点期间,Flink将RocksDB中的状态复制到分布式文件系统。在恢复期间,将从最新的检查点创建一个新的RocksDB实例。另一方面,缓存是一个很好的存储层,在缓存丢失的情况下,它可以透明地返回到一些实际的存储。这更接近于描述RocksDB状态后端是如何与Flink相匹配的,只是Flink的状态后端是必不可少的组件,而不是很适合拥有的组件。如果在RocksDB中找不到正在运行的作业的状态,它就不存在。

撇开这一点不谈,是的,您可以将数据存储在RocksDB中24小时,然后删除它(或者将其删除)。您可以使用带有KeyedProcessFunction的定时器显式地删除它,然后在计时器触发时清除一个条目。或者您可以使用状态TTL机制为您自动设置Flink清除状态。

您不必在RocksDB中使用Flink。完全基于内存堆的状态后端是一种更高性能的替代方案,它提供了同样的一次容错保证,但它不会像RocksDB那样溢出到磁盘,因此您在可以管理多少状态方面受到了更大的限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70900933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档