flink 使用RocksDB作为状态后端

Flink RocksDB状态后端优化总结 截至当前,Flink 作业的状态后端仍然只有 Memory、FileSystem 和 RocksDB 三种可选,且 RocksDB 是状态数据量较大(GB 到 TB 级别)时的唯一选择。RocksDB 的性能发挥非常仰赖调优,如果全部采用默认配置,读写性能有可能会很差。但是,RocksDB 的配置也是极为复杂的,可调整的参数多达百个,没有放之四海而皆准的优化方案。如果仅考虑 Flink 状态存储这一方面,我们仍然可以总结出一些相对普适的优化思路。本文先介绍一些基础知识,再列举方法。 阅读详情

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(内存)上,具体做法见上述代码

Flink 使用 RocksDB 作为状态后端存储的原因详解 RocksDB 作为 Flink 的状态后端,凭借其大容量支持、增量检查点、堆外存储、高性能 I/O等优势,成为生产环境中处理大状态流作业的首选方案。尽管其访问延迟略高于纯内存方案,但在状态规模、容错能力和资源效率方面具有不可替代的优势。合理配置 RocksDB(内存、磁盘、增量检查点)可显著提升 Flink 作业的稳定性与性能。 阅读详情

相关推荐

flink rocksdb状态说明

1).关于rocksdb数量

努力工作学习的程序员 1635

Flink RocksDB

前言概述 流处理应用程序通常是有状态的,通过保存已处理事件的信息,用于影响未来事件的处理。Flink中保存的事件信息,即状态,会被存储在已经配置的状态后端中。为避免应用程序故障时造成数据丢失,状态后端会定期将其快照持久化到预先配置的持久存储中。RocksDB状态后端(RocksDBStateBackend)是Flink三个内置状态后端之一。本文主要描述使用RocksDB管理Flink作业状态的好处、如何、何时使用它,并澄清一些常见的误区。尽管如此,本文并不负责解释RocksDB内部机制及如何进行故障排除和性

一直奔跑的马 5078

【flink】RocksDB介绍以及Flink对RocksDB的支持

1.概述 转载:「Flink」RocksDB介绍以及Flink对RocksDB的支持 2.RocksDB简介 RocksDB是基于C++语言编写的嵌入式KV存储引擎,它不是一个分布式的DB,而是一个高效、高性能、单点的数据库引擎。它是由Facebook基于Google开源的kv存储LevelDB开发开发。RocksDB使用LSM存储引擎。它针对不同的生产环境进行调优,可以直接使用内存、也可以使用Flash、或者用硬盘或者HDFS。而且支持不同的压缩算法,有一整套的工具用于生产、调试使用。RocksDB是一种

九师兄 4580

flink状态后端之RocksDB

1.什么是RocksDb? RocksDB 是一个以日志合并树( LSM 树)作为索引结构的 KV 存储引擎。当用于在 Flink 中存储 kv 状态时,键由 <Keygroup,Key,Namespace> 的序列化字节串组成,而值由状态的序列化字节组成。每次注册 kv 状态时,它都会映射到列族(column-family)(类似于传统数据库中的表),并将键值对以字节串存储在 RocksDB 中。这意味着每次读写(READ or WRITE)操作都必须对数据进行反序列化或者序列化,与 Flin

启迪思维,精进技术 3959

【Flink】Flink on RocksDB 参数调优指南

1. 背景 对于需要保存超大状态(远超于内存容量)的流计算场景来说,目前 RocksDB [1] 是 Flink 平台上官方实现的唯一选择。业界也有使用 Redis 等其他服务作为状态后端的方案,但终究不够成熟,且已被社区否决 [2]. 基于我们长期的状态调优经验,通过合理的资源分配,RocksDB 方案可以稳定支持上百 GB 甚至上 TB 的总状态量;但是众所周知的是,RocksDB 的可调参数非常繁琐,有上百个之多,且彼此之间还相互影响,非常难以调整。更致命的是,默认参数和配置不当的参数,读写性能会比.

九师兄 7093

【Flink】Flink 使用 RocksDb 状态后端报错 File name too long

Flink 使用 RocksDb 状态后端,实现mongo数据整库写hudi,采用RocksDBStateBackend状态后端,checkpoint产生的文件名太长报错报错 File name too long,然后再往下我们发现报错的不是flink的包了,是RocksDb的包,而我们的路径是没有问题的,虽然长,但是也应该支持,因此可能是RocksDb的问题。注意截图中的RocksDb版本只是案例,不是本次报错的版本。后面升级了RocksDb就好了。

九师兄 410

何时以及如何在 Apache Flink 中使用 RocksDB 状态后端

何时以及如何在 Apache Flink 中使用 RocksDB 状态后端Flink中的状态什么是RocksDB?Flink中的RocksDB什么时候使用RocksDBStateBackend如何使用RocksDBStateBackend集群级别作业级别最佳实践和高级配置状态在RocksDB中的位置RocksDB故障诊断总结 流处理应用程序通常是有状态的,“记住”已处理事件中的信息,并使用它来影响进一步的事件处理。在Flink中,记住的信息,即状态,被本地存储在配置的状态后端中。为了防止发生故障时丢失数据,

Matrix42 3794

Flink教程(11)-RocksDB

Flink教程,RocksDB

鸟哥哥的专栏 1443

Flink使用Rocksdb状态后端任务运行一段时间后挂掉

问题描述: 由于需要存储大量状态信息,在使用Flink Sql开发实时计算作业时配置RocksDB做为状态后端, 任务起初运行良好,运行一段时间后有任务偶发性出现失败,(使用yarn logs -applicaitonId)查看作业日志发现以下异常信息: org.apache.flink.runtime.io.network.netty.exception.RemoteTransportException: Connection unexpectedly closed by remote task m

一个不安分的程序员 3306

深入解析SDC时钟约束:从create_clock到set_clock_groups的实战指南

本文深入解析SDC时钟约束,从create_clock到set_clock_groups的实战应用,帮助数字芯片设计工程师掌握时序约束的核心技巧。通过详细讲解时钟三要素(波形定义、不确定性和时钟关系)及实战案例,提升时钟约束的精准性和效率,避免常见设计陷阱。

weixin_29274337的博客 1079

别再手动搬数据了!用rclone一键同步MinIO到华为云OBS的保姆级教程

本文详细介绍了如何使用rclone工具实现MinIO到华为云OBS的数据迁移,包括环境准备、双端配置、迁移前验证、实战迁移及后期监控等步骤。通过rclone的增量同步、断点续传等功能,确保数据迁移高效安全,特别适合需要跨云存储迁移的用户。

weixin_30839881的博客 525

关于使用Flink RocksDB状态后端时一定要写MapState而非ValueState<Map>这档事(以及解决方法)...

前言 抱歉起这种烂大街的日本轻小说风格标题来吸引注意力。原本我认为这是常识,不需要专门写一篇文章来讲解如此细碎的点。但是在最近工作巡检中发现了越来越多如同ValueState<Map>的状态用法(当然大部分是历史遗留),部分Flink作业深受性能问题困扰,所以还是抽出点时间快速聊一聊,顺便给出不算优雅但还算有效的挽救方案。 基于RocksDB的状态序列化 我们已经知道,RocksDB是...

LittleMagic's Blog 437

利用GBD数据库做未来疾病负担预测

最近看到一篇文献,利用GBD数据库中的数据对疾病负担的发展趋势进行预测。觉得很有趣,就抽空用R语言复盘了一下里面关键的方法。 参考文献: Changing trends in the disease burden of esophageal cancer in China from 1990 to 2017 and its predicted level in 25 years DOI: 10.1002/cam4.3775 1. 相关R包的安装 主要用到的R包有3个,一个一个讲: 1.1 Nordpred

NickyCat的博客 5万+

在 Apache Flink 中,`RocksDBStateBackend` 是一种流行的持久化状态后端,它使用 RocksDB 作为状态的存储引擎

在 Apache Flink 中,`RocksDBStateBackend` 是一种流行的持久化状态后端,它使用 RocksDB 作为状态的存储引擎。- RocksDB 支持增量Checkpoint,这意味着只有自上次Checkpoint以来发生变化的状态部分会被保存,从而减少了Checkpoint的存储和传输开销。- 状态数据持久化到磁盘,即使在 Flink 作业失败的情况下,也能够从最后一个成功的Checkpoint中恢复状态。- 设置合适的Checkpoint间隔和超时时间,以平衡性能和容错。

smile6868的博客 1187

FPGA新手必看:Create HDL Wrapper和Generating Output Products到底该先用哪个?

本文深入解析了FPGA设计中Create HDL Wrapper与Generating Output Products的正确使用顺序,帮助新手避免常见错误。详细介绍了两者的功能差异、执行顺序的底层逻辑以及工程管理的最佳实践,特别适合使用Vivado进行FPGA开发的初学者。

xk7n92h3p5m的博客 1065

Nacos2.3.0与vastBase数据库的集成实践指南

本文详细介绍了将Nacos 2.3.0的默认数据库从MySQL迁移至vastBase数据库的完整实践指南。内容涵盖前期环境准备、源码改造、依赖配置、SQL适配、数据库初始化以及最终的编译打包与部署验证,旨在帮助开发者在国产化或特定技术栈场景下,实现微服务配置中心与vastBase数据库的自主可控集成。

plant的博客 275

java使用rocksdb,java-在Flink中使用RocksDB作为状态后端时,创建快照的API调用是什么?...

package org.apache.flink.streaming.examples.spendreport;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import ...

weixin_34493203的博客 375

YOLOv13改进策略【注意力机制篇】| ICASSP 2023 EMA 高效多尺度注意力,跨空间学习提高远距离建模依赖

ICASSP 2023 EMA 高效多尺度注意力在 YOLOv13 的接入实战:跨空间学习提升远距离依赖建模,含原理图解、完整代码、yaml 配置与实测参数量对比(ultralytics 8.3.63)。

qq_53329130的博客 935

苹果 m1 芯片下运行 flink 程序使用 rocksdb 状态后端兼容性问题

flink rodcksdb 状态后端与苹果 m1 芯片的兼容性解决方案

完善飞跃 963

Field Characteristics 深入解析,理解 SAP ABAP Analytics 中 Dimension 与 Measure 的真正边界

在SAP ABAP Analytics数据模型中,字段应建模为Dimension还是Measure,关键在于业务语义而非数据类型。Dimension提供分析上下文,构成数据坐标系,支持钻取与切片;Measure则需具备明确聚合语义(如#SUM、#MIN、#MAX),且必须满足Distinct(无重复)与Complete(无缺失)原则,确保聚合结果准确。错误的建模会导致聚合偏差,根源常在事实粒度不清或关联关系不当。因此,正确划分字段角色,本质是让Analytical Engine准确理解业务数据的分析逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 59

apollo-减速带通行

主车在通过减速带时速度不超过3m/s

是菜鸟o的博客 390

从一个案例研究 磁盘对Flink中RocksDB状态后端的影响

RocksDB是Flink中的一个状态后端,它允许作业的状态大于可用内存量,因为状态后端可以将状态溢出到本地磁盘。这意味着磁盘性能可能会影响使用RocksDB的Flink作业的性能。通过一个案例研究,本文说明了使用RocksDB的Flink作业的吞吐量下降问题,并演示了我们如何将底层磁盘的性能确定为根本原因。 作业和执行环境 我们处理的是一个典型的物联网(IoT)工作,它处理数百万台设备发出的事件流。每个事件都包含设备标识符(ID)、事件类型和生成事件时的时间戳。作业基于设备ID对流进行分区,并以状态存

yscoder的博客 981

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

1.1w 字入门、进阶并实战 Flink 状态后端!

本文摘编于《Flink SQL 与 DataStream 入门、进阶与实战》,京东机械工业出版社旗舰店限时5折,作者羊艺超,经机械工业出版社授权发布,转载请标明文章出处。文末点赞留言送2本!!!6.4 Flink状态后端在Flink作业开启Checkpoint机制后,作业中的本地状态数据就会随着Checkpoint的执行而持久化到远程分布式文件系统中,但是在前几节的学习中,我们一直都省略了一个内容...

数据一哥,公众号:数据社 481

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Flink 状态后端

状态后端 (state backend) : 负责管理本地状态的存储方式, 位置。

记录点点滴滴 2343

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【白话Flink基础理论】Flink中的状态State——状态管理与状态后端(一)

——wirte by 橙心橙意橙续缘, 前言 白话系列 ———————————————————————————— 也就是我在写作时完全不考虑写作方面的约束,完全把自己学到的东西、以及理由和所思考的东西等等都用大白话诉说出来,这样能够让信息最大化的从自己脑子里输出并且输入到有需要的同学的脑中。PS:较为专业的地方还是会用专业口语诉说,大家放心! 白话Flink系列 ———————————————————————————— 主要是记录本人(国内某985研究生)在Flink基础理论阶段学习的一些所学,更重要的是一

橙心橙意橙续缘的博客 696

Flink 1.17 RocksDB 状态后端监控指标详解

Flink 1.17 RocksDB状态后端监控指标详解 本文全面解析Flink 1.17中RocksDB状态后端的关键监控指标,涵盖四个核心维度: 写入与后台延迟监控:包括stall-micros、is-write-stopped等指标,用于检测写入瓶颈 读取与缓存效率:重点关注block-cache-hit/miss等指标,反映缓存命中率 内存使用监控:分析block-cache-usage、cur-size-all-mem-tables等内存相关指标 压缩与文件系统:包含compaction-pend

m0_64348660的博客 1205
上一篇: 主机无法访问wsl内部
下一篇: vue2项目gzip加速
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值