flink 使用RocksDB作为状态后端

server/2024/9/25 4:27:18/

RocksDB

flink在生产环境中常用RocksDB作为状态后端
1、subtask在taskmanager中作为一个线程运行,如果设置了RocksDB状态后端,RocksDB也会启动一个独立的线程,供subtask来使用。
2、RocksDB是一个kv数据库,因此只能存储flink的键控状态,算子状态还是会放到subtask中。
3、RocksDB会单独占据一块flink内存,它不受JVM GC管控
4、RocksDB会把数据存储到taskmanager所在磁盘上。
5、RocksDB比HashBackend的优点在于,状态数据存储空间大,文件存储更加稳定

使用RocksDB

<!-- RocksDB状态后端使用开始 -->
<dependency><groupId>org.apache.flink</groupId><artifactId>flink-statebackend-rocksdb_${scala.version}</artifactId><version>${flink.version}</version>
</dependency>// timer优化
Configuration conf = new Configuration();
ConfigOption<String> timer = ConfigOptions.key("state.backend.rocksdb.timer-service.factory").stringType().noDefaultValue();
conf.set(timer, "HEAP");StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);// 设置rocksdb statebackend,增量模式
// 默认不是增量,会把全量的状态数据保存到hdfs,否则只是同步增连的状态
env.setStateBackend(new EmbeddedRocksDBStateBackend(true));
// 开启checkpoint
env.enableCheckpointing(10000, CheckpointingMode.EXACTLY_ONCE);
// 设置checkpoint的存储路径
env.getCheckpointConfig().setCheckpointStorage("hdfs://hdp01:8020/checkpoints");

RocksDB序列化

rocksdb key value都是基于byte数组进行存储,一个byte数组最大是2^31字节=>2G
如果超过2G会导致状态读取异常。

RocksDB优化

如果使用RocksDB做状态后端,Flink中的定时器(timer-service),也会放到RocksDB中,这样定时器会被频繁访问,导致效率问题,因此可以设置一下,将timer放到heap(内存)上,具体做法见上述代码


http://www.ppmy.cn/server/106228.html

相关文章

zookeeper服务搭建

zookeeper服务搭建 前言1. 前置准备2. 下载和解压Zookeeper3. 配置环境变量4. 编辑Zookeeper配置文件5. 配置Zookeeper节点ID6. 配置好的Zookeeper分发到其他节点7. 启动Zookeeper集群参考博客 前言 Zookeeper是一个开源的分布式协调服务&#xff0c;主要用于解决分布式应用中的…

【图论】Tarjan算法(强连通分量)

一、Tarjan算法简介 Tarjan算法是一种由美国计算机科学家罗伯特塔杨&#xff08;Robert Tarjan&#xff09;提出的求解有向图强连通分量的线性时间的算法。 二、强连通分量的概念 在有向图 G G G 中&#xff0c;如果任意两个不同的顶点相互可达&#xff0c;则称该有向图是强…

NLP发展脉络-->特征优化阶段

NLP特征优化阶段 文本预处理特征提取降维与特征选择特征组合与扩展特征选择与评估特征工程的优化模型可解释性偏统计和规则的特征化阶段优缺点优点缺点 这是NLP的一个发展阶段。今天&#xff0c;我们就来了解一下NLP的特征优化阶段。特征优化在NLP的发展中曾经是一个至关重要的…

EDKII之安全启动详细介绍

文章目录 安全启动简介安全启动流程介绍签名过程BIOS实现小结 安全启动简介 安全启动&#xff08;Secure Boot&#xff09;是一种计算机系统的安全功能&#xff0c;旨在确保系统启动过程中只能加载经过数字签名的受信任的操作系统和启动加载程序。通过使用安全启动&#xff0c…

Qt第十六章 多媒体Multimedia

文章目录 多媒体音频播放音频录制音频低延迟音效低级音频播放和录制推送和拉取解码压缩音频到内存与音频处理相关的类 视频播放视频处理低级视频帧录制视频与视频处理相关的类 支持的媒体格式 多媒体 cmakelist 添加Multimedia模块 设备信息查询 #include <QAudioDevice>…

Clickhouse集群化(一)k8s集群搭建

环境准备&#xff1a; vm 17 pro 有些功能必须pro版本才会提供&#xff08;https://download.csdn.net/download/weixin_40663313/89677277?spm1001.2014.3001.5501&#xff09;夸克下载链接 centos 7.9 docker&#xff1a;1.26 k8s&#xff1a;1.21.14 1. 创建虚拟机 …

java后端请求与响应总结

get 请求&#xff1a;将参数写在请求路径中&#xff08;请求路径跟一个&#xff1f;后面跟参数多个参数之间用&连接&#xff09; post 请求&#xff1a;将参数写在请求体中中 一、请求 1.简单参数 如 传一个或两个字符串、整数等 例如串一个用户名和密码 如果传入的数…

【Linux】实现三个迷你小程序(倒计时,旋转指针,进度条)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 &#x1f4cc;倒计时小程序 &#x1f38f;项目效果展示 &#x1f38f;项目实现思路 &#x1f38f;项目完整代码 &#x1f4cc;旋转指针小程序 &#x…