Flink的RocksDB的使用以及问题

本文探讨了在大型维度表场景下,如何利用RocksDB解决传统旁路缓存的不足,强调了RocksDB作为状态后端的优势,包括其本地磁盘存储、分片设计和性能优化策略,同时指出非键属性关联带来的挑战以及对SSD和CPU资源的需求.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

维度表一般采用旁路缓存异步IO的方案,但是如果一些维度表很大,对数据处理延迟要求高,旁路缓存模式IO不能满足需求的情况可以考虑使用RocksDB来解决。RocksDBStateBackend 作为状态后端来避免频繁的数据库连接和读取操作。
**首先**:RocksDB状态是存在本地磁盘的,CheckPoint存在HDFS
**其次**:RocksDB状态是按key分片存储在各个节点的磁盘上的,处理数据的时候,Flink 框架负责保证数据项与其对应键的状态之间的一致性匹配。开发者不需要担心数据项会被错误地发送到处理不了该键状态的实例。但是当我们(non-key)属性进行数据关联,比如日期,而不是原始键(如 ID),这时就不能直接依赖 Flink 的 keyBy 分区机制来直接访问状态了,因为 keyBy 机制确保的是相同键的数据项会被路由到相同的并行实例。对于基于时间或其他非键属性进行关联的情况需要另辟蹊径,这也是局限性和问题。
**RocksDB的磁盘IO性能问题**:
虽然 RocksDB 会产生磁盘 I/O,但它通过各种方式优化了 I/O 性能:
批量写入:通过批量处理写入操作来减少 I/O 次数。
增量检查点(Incremental Checkpoints):Flink 的 RocksDBStateBackend 可以只对改变的部分进行检查点保存,减少数据的写入量。
合并读取和压缩策略:通过智能的读取和压缩策略减少磁盘访问次数和优化存储空间使用。
**集群影响**:因为涉及磁盘IO,SSD是必要的,而且会有缓存,合并和压缩的时候也会对cpu有一定依赖。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值