第1章 简介
Flink状态和checkpoint的概念这里就不多赘述了,有兴趣的朋友可以看看我之前的文章,直接看一下官方对目前三种StateBackend的对比,在生产环境中我们经常选用的就是RocksDBStateBackend,他有磁盘存储和增量cp的优势,接下来我们就看看开发过程中如何使用RocksDBStateBackend。
名称 | Working State | 状态备份 | 快照 |
---|---|---|---|
RocksDBStateBackend | 本地磁盘(tmp dir) | 分布式文件系统 | 全量 / 增量 |
|
|||
FsStateBackend | JVM Heap | 分布式文件系统 | 全量 |
|
|||
MemoryStateBackend | JVM Heap | JobManager JVM Heap | 全量 |
|
在新版本中有所改动,分为一下两种:
-
HashMapStateBackend:
状态数据以 Java 对象的形式存储在
堆
中。 Key/value 形式的状态; -
EmbeddedRocksDBStateBackend:
将正在运行中的状态数据保存在
RocksDB数据库
中。
新旧版本使用方法大同小异,下面我们看看具体的使用。
第2章 全局配置
我们可以在
flink-conf.yaml
中进行全局的配置,如果job中有自己的设置,优先job中的设置。
# 用于存储 operator state 快照的 State Backend
state.backend: rocksdb
# 增量
state.backend.incremental: true
# 存储快照的目录
state.checkpoints.dir: hdfs://namenode:40010/flink/checkpoints
第3章 作业中使用
如果要在程序中使用RocksDB作为StateBackend,需要引入如下依赖:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-statebackend-rocksdb_2.11</artifactId>
<version>1.14.2</version>
<scope>provided</scope>
</dependency>
程序中再进行如下设置:
env.setStateBackend(new RocksDBStateBackend("hdfs://namenode:40010/flink/checkpoints", true));
checkpoint目录详细说明见:
checkpoint目录结构
更多信息可查阅官方文档:
Apache Flink State Backends
2021年就要接近尾声了,时间过的真快,有一段时间没有输出文章了,今天续上一篇,感恩2021 !!
版权声明:本文为dzh284616172原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。