配置了 RocksDB,Flink 中所有状态数据都会存在 RocksDB 吗?

开发 架构
在说背景前,先说一下标题的结论:你配置的 rocksdb 只会影响 flink 任务中 keyed state 存储的方式和地方,flink 任务中的 operator state 不会受到影响。

[[439893]]

1.大家首先要知道的一些背景

在说背景前,先说一下标题的结论:你配置的 rocksdb 只会影响 flink 任务中 keyed state 存储的方式和地方,flink 任务中的 operator state 不会受到影响。

状态:状态就是用户在程序中使用的数据结构。比如 flink 中的 MapState,ValueState,ListState。在一个 flink 任务中,不管我们使用了多少状态,这些状态只会分为 operator state,keyed state 两类状态。

状态管理:为了防止 long run 的 flink 任务挂了导致状态丢失,产生数据质量问题,flink 提供了状态管理(Checkpoint,Savepoint)的能力把我们使用的状态给管理起来,定时的保存到远程。然后可以在 flink 任务 failover 时,从远程把状态数据恢复到 flink 任务中,保障数据质量。

状态后端:状态后端就是决定了以什么样数据结构,什么样的存储方式去存储和管理我们的状态。flink 目前官方提供了 memory、filesystem,rocksdb 三种状态后端来存储我们的状态。

2.在配置不同的状态后端时,到底对 flink 任务有什么影响

其实所有的内容都浓缩到了这样图中:

sql 开发

横向(行)来看,分为 Operator state-backend、Keyed state-backend 来管理一个 flink 任务中的所有状态(operator state,keyed state)

纵向(列)来看,用户可以通过配置 memory,filesystem,rocksdb,在 flink 任务中生成 MemoryStateBackend,FsStateBackend,RocksdbStateBackend,其声明了整个任务的状态管理后端类型

每个格子中的内容就是用户在配置 xx 状态后端(列)时,给用户使用的状态(行)生成的状态后端实例,生成的这个实例就是用于管理用户使用的状态的。

那么可以得到的结论就是:

 

  • flink 任务中的 operator state。无论用户配置哪种状态后端(无论是 memory,filesystem,rocksdb),都是使用 DefaultOperatorStateBackend 来管理的,状态数据都存储在内存中。
  • flink 任务中的 keyed state,会有不同。用户在配置 rocksdb 时,会使用 RocksdbKeyedStateBackend 去管理状态;用户在配置 memory,filesystem 时,会使用 HeapKeyedStateBackend 去管理状态。
  • 那么也就是说,你配置的 rocksdb 只会影响 keyed state 存储的方式和地方,operator state 不会受到影响。

 

责任编辑:武晓燕 来源: 大数据羊说
相关推荐

2018-03-07 13:21:26

RocksDB数据存储

2022-08-31 08:04:08

Ceph配置选项

2023-12-06 21:44:28

RocksDBvivo

2018-02-07 16:05:59

MySQLMyRocksRocksDB

2011-12-12 13:17:21

云计算

2010-09-02 14:36:44

Linux命令行

2024-04-12 10:01:07

MySQL事务I/O

2014-05-13 14:11:36

GoRedis

2010-05-07 15:48:38

Oracle数据库

2022-06-27 16:12:48

CSS像素前端

2009-03-02 16:52:59

SQL数据库开发

2023-05-10 08:29:28

Spring配置原理

2021-09-05 07:55:36

Lsm核心实现

2010-09-09 14:17:42

2018-06-14 15:22:54

大数据数据分析职业

2017-07-07 11:28:24

大数据大数据技术

2015-07-29 10:54:58

Java 8包列表

2023-10-20 13:18:05

Flink数据

2021-09-27 05:27:21

微信微信状态腾讯

2015-09-02 10:11:31

点赞
收藏

51CTO技术栈公众号