Flink状态后端RocksDBStateBackend的使用

第1章 简介

Flink状态和checkpoint的概念这里就不多赘述了,有兴趣的朋友可以看看我之前的文章,直接看一下官方对目前三种StateBackend的对比,在生产环境中我们经常选用的就是RocksDBStateBackend,他有磁盘存储和增量cp的优势,接下来我们就看看开发过程中如何使用RocksDBStateBackend。

名称Working State状态备份快照
RocksDBStateBackend本地磁盘(tmp dir)分布式文件系统全量 / 增量
  • 支持大于内存大小的状态
  • 经验法则:比基于堆的后端慢10倍
FsStateBackendJVM Heap分布式文件系统全量
  • 快速,需要大的堆内存
  • 受限制于 GC
MemoryStateBackendJVM HeapJobManager 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 !!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pezynd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值