Flink中的三种状态管理器

Flink的三种状态后端存储方式 文章目录1. MemoryStateBackend1.1 概念1.2 特点及使用场景2. FsStateBackend2.1 概念2.2 特点及应用场景3. RocksDBStateBackend3.1 概念3.2 特点及应用场景 在Flink中提供了StateBackend(状态后端)来存储和管理Checkpoint过程中的状态数据。StateBackend分为三种。 1. MemoryStateBackend 1.1 概念 1.2 特点及使用场景 MemoryStateBackend存储有如下特点: 阅读详情

Flink中的状态管理器

flink提供了三种状态管理器分别是:

  • 基于内存的MemoryStateBackend
  • 基于文件系统的FsStateBackend
  • 基于RockDB的RocksDBStateBackend

1. MemoryStateBackend

MemoryStateBackend将状态数据全部存储于JVM堆内存中。MemoryStateBackend是Flink的默认状态管理器。状态数据包括用户使用的DataStream API创建的Key/Value State、窗口中缓存的状态数据和触发器等数据。基于内存的状态管理器速度快且高效,但具有内存容量有限等限制。一旦存储的状态数据过多就会导致系统内存溢出等问题。内存数据的易失性,如果机器出问题,整个主机内存中的状态数据就会丢失,进而无法恢复任务中的状态数据。因此MemoryStateBackend存在数据安全性问题,不建议用户在生产环境中使用。

  MemoryStateBackend可以通过配置来使用异步快照(Asynchronous Snapshots)。通过异步快照可以避免阻塞管道(Blocking Pipelines),目前是默认开启,当然也可以通过MemoryStateBackend的构造函数配置进行关闭:

new MemoryStateBackend(MAX_MEM_STATE_SIZE, false);

其中MAX_MEM_STATE_SIZE指定每个状态值最大的内存使用大小。

MemoryStateBackend特点

  1.   聚合状态(Aggregate State )必须放入JobManager的内存。聚合类算子的状态存储在JobManager内存中,因此对聚合类算子比较多的应用汇对JobManager的内存造成一定压力,继而对整个集群性能会有影响。
  2. 状态的大小不能超过akka的framesize大小。尽管创建MemoryStateBackend时可指定状态初始化内存大小,但是由于数据在JobManager和TaskManage之间传输受限于Akka框架通信的akka.framesize大小,所以状态数据大小不能超过akka.framesize(默认10485760bit)。
  3. 不合适状态数据非常大的情况。由于JVM内存容量受限于主机内存,不管JobManager还是TaskManager,器维护状态数据都受到内存限制。
  4. MemoryStateBackend的适用场景:测试环境、本地调试和验证,flink任务状态数据量较小的场景或者只涉及非状态算子计算的场景。不建议生产环境中使用。

2 FsStateBackend

FsStateBackend是基于文件系统的状态管理器,文件系统可以说HDFS等分布式文件系统,也可以是本地文件系统。FsStateBackend将动态数据保存在taskmanger的内存中,通过checkpoint机制,将状态快照写入配置好的文件系统或目录中。最小元数据保存jobManager的内存中,另外FsStateBackend通过配置一个fileStateThreshold阈值,小于该值时state存储到metadata中而非文件中。

FsStateBackend默认通过配置来使用异步快照(asynchronous snapshots)避免阻塞管道(blocking pipelines),当然也可以通过FsStateBackend的构造函数配置进行关闭:

new FsStateBackend(path, false);

其中,path是文件路径,若为本地路径,格式为:file:///data/flink/checkpoints,若是HDFS路径,格式为:hdfs://namenode:40010/flink/checkpoints。FsStateBackend第二个参数Boolean类型,指定是否以同步的方式进行状态数据记录。默认false,采用异步的方式将状态数据同步到文件系统中,异步方式能够尽可能避免在Checkpoint的过程中影响流式计算任务。如果用同步方式进行状态数据额检查点数据,设为true。

FsStateBackend特点

  1. FsStateBackend比较稳定。
  2. 借助HDFS 等分布式文件系统中具有三个副本备份的策略,能最大程度保证状态数据的安全性,不会因外部故障导致任务无法恢复等问题。
  3. FsStateBackend适用场景1)大状态,2)长窗口如时间范围非常长的窗口计算,3)key/value状态数据非常大 的任务,4)全高可用配置

3.RocksDBStateBackend

RocksDBStateBackend是Flink内置的第三方状态管理器,如使用单任务配置用需先加入依赖:

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-statebackend-rocksdb_${scala.binary.version}</artifactId>
            <version>1.8.0</version>
        </dependency>

 RocksDBStateBackend采用异步的方式进行状态数据的snapShot,先将工作状态数据保存在RocksDB数据库(位置在taskManagerd的数据目录)。然后,通过checkpoint, 整个RocksDB数据库被复制到配置的文件系统或目录中。这样RockDB仅会存储正在进行计算的热塑局,对于长时间才更新的数据则写入到文件系统。而体量比较小的元数据状态则直接保存jobManager的内存中。RocksDBStateBackend可以通过enableIncrementalCheckpointing参数配置是否进行增量Checkpoint(而MemoryStateBackend 和 FsStateBackend不能)。

RocksDBStateBackend特点

  1. RocksDBStateBackend仅支持异步快照。与FsStateBackend 不同的是,RocksDBStateBackend仅支持异步快照(asynchronous snapshots)。
  2. RocksDBStateBackend每次合并的状态数据不能超过2^{31}字节。RocksDB通过JNI的方式进行数据交互,JNI构建在byte[]数据结构回去,因此每次传输的最大数据量为2^{31}字节,所以RocksDBStateBackend每次合并的状态数据不能超过2^{31}字节,否则会导致状态数据无法同步。
  3. RocksDBStateBackend适用场景:大状态、长窗口、大key/value状态的的任务、全高可用配置
  4. Flink已经提供了基于RocksDBStateBackend实现的增量Checkpoint功能,极大提高了状态数据同步到介质的效率和性能。
  5. 由于RocksDBStateBackend将工作状态存储在taskManger的本地文件系统,状态数量仅仅受限于本地磁盘容量限制,对比于FsStateBackend保存工作状态在内存中,RocksDBStateBackend能避免flink任务持续运行可能导致的状态数量暴增而内存不足的情况,因此适合在生产环境使用。

参考

[1]  flink状态后端配置-设置State Backend(https://www.jianshu.com/p/ac0fff780d40)

[2] 聊聊flink的MemoryStateBackend(https://www.jianshu.com/p/91fb5169af71) 

[3] Flink 三种状态存储方式 MemoryStateBackend、FsStateBackend、RocksDBStateBackend(https://blog.youkuaiyun.com/u010002184/article/details/106974208/)

 

 

 

 



 

Flink 三种状态存储方式 MemoryStateBackend、FsStateBackend、RocksDBStateBackend StateBackend的意思是状态后端。 状态后端定义了流式应用程序状态如何存储和checkpoint的。不同的状态后端以不同的方式来存储其状态,并且使用不同的数据结构来保存正在运行的应用程序的状态。 MemoryStateBackend: 1 基于内存的状态管理器,聚合类算子的状态会存储在JobManager的内存中 2 单次状态大小默认最大被限制为5MB,可以通过构造函数来指定状态初始化内存大小。无论单次状态大小最大被限制为多少,都不可大于akka的frame大小(1.5MB,JobMa. 阅读详情

相关推荐

【Flink】Flink The rpc invocation size %d exceeds the maximum akka framesize

flink 1.10 作业在出错重启的过程中,jobmanager一直报的错误看了一下,这个方法是进行rpc远程调用的时候,序列化对象的大小超过了长度,但是我不是很明白,如果超过了这个长度,不是应该第一次启动的时候都不行吗?我设置的并行度是10,如果启动成功,会启动10个taskmanager,而且启动另外9个taskmanager都没有错,启动第10个的时候就会报错。我是基于yarn来运行的。每个taskmanager一个slot。

九师兄 815

【flink状态管理(四)】MemoryStateBackend的实现

【flink状态管理(四)】MemoryStateBackend的实现

hiliang521的博客 1915

【Flink】Flink 任务报错 akka remote connection TooLongFrameException adjusted frame length discarded

taskmanager一直报这个告警,运行一段时间后taskmanager会挂了,这是什么原因导致的?错误如下看起来是netty传输的时候帧太大了。目前尝试把内存调大一点,任务还算稳定,但告警还在。然后去看看源码,在flink所有源码中查询 只发现一个地方配置了参数但是这个参数,又好像被排除了请看下面这里这个插件的使用请参考:然后查看这个参数的说明/**可以看到这个参数默认的值1.25MB,但是被弃用了,建议使用,我们去看看这个参数有啥用。这个参数在定义如下/**

九师兄 3815

【Flink-State】Flink三种StateBackend的区别与使用:MemoryStateBackend & FsStateBackend & RocksDBStateBackend

RocksDB是一种嵌入式的本地数据库。RocksDBStateBackend 将处理中的数据使用RocksDB存储在本地磁盘上。 在checkpoint时,整个RocksDB数据库会被存储到配置的文件系统中,或者在超大状态作业时可以将增量的数据存储到配置的文件系统中。同时Flink会将极少的元数据存储在JobManager 的内存中,或者在Zookeeper中(对于高可用的情况) RocksDB默认也是配置成异步快照的模式。RocksDB是一个 key/value 的内存存储系统,和其他的 key/v

weixin_53543905的博客 2106

别再死磕文档了!用国产MBSES软件5分钟上手MBSE建模(保姆级图文教程)

本文通过国产MBSES软件,详细演示了如何在5分钟内完成智能家居系统的MBSE建模。从模块图定义到状态机图构建,再到参数约束验证,全程图文指导,帮助工程师快速掌握基于模型的系统工程方法,显著提升复杂系统设计效率。

weixin_26833503的博客 236

别再只用GWR了!用Python的mgtwr包搞定时空地理加权回归(GTWR)实战

本文详细介绍了如何使用Python的mgtwr包进行时空地理加权回归(GTWR)实战,突破传统GWR模型的局限。通过核心差异解析、实战全流程演示和进阶技巧,帮助读者掌握GTWR在房价波动、污染物扩散等时空数据分析中的应用,提升模型预测精度。

weixin_30899023的博客 340

状态管理器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录StateBackend的类别MemoryStateBackendFsStateBackendRocksDBStateBackend StateBackend的类别 Flink的三种状态管理器:基于内存的MemoryStateBackend,基于文件系统的FsStateBackend,基于RockDB作为存储介质的RocksDBStateBackend。 这三种类型的状态管理器都能有效地存储flink流式计算过程中产生的状态数据,

weixin_45126258的博客 1094

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 379

Flink 去除重复数据 重复数据处理

Flink 去除重复数据 重复数据处理

qq_27480007的博客 4417

Frida Stalker实战:如何用指令级追踪破解OLLVM混淆的AES算法

本文深入探讨了如何使用Frida Stalker进行指令级追踪,破解经过OLLVM混淆的AES算法。通过动态分析技术,逆向工程师可以精准识别控制流平坦化等混淆手段,还原算法逻辑,特别适用于移动安全领域的加密算法分析。文章提供了详细的配置指南、核心机制解析和实战案例,帮助读者掌握对抗高级代码混淆的有效方法。

weixin_29325955的博客 475

9.Vue前端使用iframe集成帆软报表的单点登录

CPT普通报表的地址:【帆软的服务http】+【/webroot/decision/view/report?【帆软的服务http】+【/webroot/decision/view/form?// fineReportHttp:帆软部署的地址。//如果为ie浏览器则页面加载完成后立即执行。// fineLinkSrc:帆软报表的url。//其他浏览器则重新加载onload事件。// 拿到配置的帆软报表的地址参数。//判断是否为ie浏览器。// 帆软报表登录和打开。// 帆软报表登录和打开。

qq_27860623的博客 4647

Flink状态管理器配置

Flink态管理器配置1 应用层面配置(单任务配置)2 集群级别配置(全局配置) 除了MemoryStateBackend不需要显示配置外,其他两种状态管理器都需要配置才能使用。Flink中有两种级别的StateBackend配置: 应用层面配置:配置状态管理器只对当前应用有效,又称单任务配置; 集群级别配置:配置对整个集群上所有应用有效,又称全局配置。 1 应用层面配置(单任务配置) StreamExecutionEnvironment的setStateBackend()方法配置状态管理器。 env.

Accelerating的博客 433

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 454

大数据计算引擎之Flink Flink状态管理和容错

这里将介绍Flink对有状态计算的支持,其中包括状态计算和无状态计算的区别,以及在Flink中支持的不同状态类型,分别有 Keyed State 和 Operator State 。另外针对状态数据的持久化,以及整个 Flink 任务的数据一致性保证,Flink 提供了 Checkpoint 机制处理和持久化状态结果数据,随后对状态数据 Flink 提供了不同的状态管理器来管理状态数据,例如: MemoryStateBackend 等。

风景旧曾谙 584

【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务

主要是学习数据桥接功能以及构建自己的http服务器,这是一个非常有用的功能。包括各种传感器上报基本上都需要数据桥接功能支持,所以还是希望认真学习这一块开发,然后结合数据库存储等等知识点进行进一步学习。

单片机菜鸟哥的博客 1305

宇树 Qmini 双足机器人完全开源:3D打印+5小时组装,新手也能玩转!

教育教学,成为学校里的竞赛竞技,实验课程,论文设计的本体;开发者可以根据开源资料轻松集齐所有零部件,结构件可全部通过3D打印完成(几乎完全不需要任何机加工零部件),搭配宇树的高可靠性电机和标准电池,客户打印完零部件后,大概仅需要3~5小时的手工组装即可得到一只可爱的Qmini小双足机器人本体。一起推动机器人的未来发展,创新没有边界,创造力是无限的,Qmini就是你的第一步,如果你也想做一个能动、能学、还能萌的小双足机器人,现在就可以动手了,全开源、真低门槛、只差你的3D打印机和一点点耐心。

雕爷学编程 1885

Flink中的状态与容错

1.概述 Flink支持有状态计算,根据支持得不同状态类型,分别有Keyed State和Operator State。针对状态数据得持久化,Flink提供了Checkpoint机制处理;针对状态数据,Flink提供了不同的状态管理器来管理状态数据,如MemoryStateBackend。 上面Flink的文章中,有引用word count的例子,但是都没有包含状态管理。也就是说,如...

376

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【FLink-13-Flink 状态State相关概念】

FLink-13-Flink 状态State相关概念

weixin_38136584的博客 323

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Flink原理实战每日一篇08

继续上面的 checkpoints 和 savepoints.........我在这里解释一下,我现在写这些其实都是看书上的,花钱买的书,不得好好吸收了么。所以在这里写博客,以前都是用有道云笔记,可每次写完都不看了,博客好啊~随时看,随时改,养成好习惯是不~~~ 1,理解CheckPoints 检查点机制 Flink中基于异步轻量级的分布式快照技术提供了checkpoints容错...

qq_31866793的博客 869

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Flink 状态管理和容错

Flink 状态管理和容错一 有状态的计算1.1 原生方式1.2 托管方式1.2.1keyed state1.2.1.1 ValueState1.2.1.2 ListState1.2.1.3 ReducingState1.2.1.4 MapState一 有状态的计算 状态存在的两种⽅式 1.1 原生方式 1.2 托管方式 1.2.1keyed state 保存state的数据结构 1.2.1.1 ValueState 1.2.1.2 ListState 1.2.1.3 ReducingState

m0_47231659的博客 201

Flink的RocksDBStateBackend一些使用经验

Flink的RocksDBStateBackend一些使用经验 一、idea依赖 RocksDBStateBackend是Flink中内置的第三方状态管理器,和其他两种(MemoryStateBackend和FsStateBackend)不同,使用时需添加相关依赖: <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-statebacken

wangshuo2019的博客 1万+

Flink教程(01)- Flink知识图谱

文章目录01 引言02 Flink 知识结构2.1 Flink介绍2.2 环境准备2.3 Flink编程模型2.4 DataStream API2.5 Flink状态管理和容错2.6 DataSet API2.7 Table API & SQL2.8 Flink组件栈2.9 Flink部署与应用2.10 Flink监控与性能优化03 Flink 知识图谱04 文末 01 引言 最近因为工作需要用到了Flink,所以博主开了《Flink教程》专栏来记录Flink的笔记。 在学习Flink之前,我们必须

阿甘兄 4582

【Flink】Flink 状态管理

文章目录一、前言二、状态类型2.1、Keyed State2.2、Operator State三、状态横向扩展四、检查点机制4.1、开启检查点4.2、保存点机制五、状态后端5.1、状态管理器分类MemoryStateBackendFsStateBackendRocksDBStateBackend5.2、配置方式六、状态一致性6.1、端到端(end-to-end)6.2、Flink+Kafka 实现端到端的 exactly-once语义七、链接文档 一、前言 有状态的计算是流处理框架要实现的重要功能,因为稍复

w1992wishes的博客 1139

Flink理论—容错之状态

主要Flink 中的状态分类和使用,并且用实际案例演示了用法;关于状态后端我们可以参考下一节。

4万+

轻松入门进阶Flink第三课 Flink基础三

第09讲:Flink 状态与容错 这一课时我们主要讲解 Flink 的状态和容错。 在 Flink 的框架中,进行有状态的计算是 Flink 最重要的特性之一。所谓的状态,其实指的是 Flink 程序的中间计算结果。Flink 支持了不同类型的状态,并且针对状态的持久化还提供了专门的机制和状态管理器。 状态 我们在 Flink 的官方博客中找到这样一段话,可以认为这是对状态的定义: When working with state, it might also be useful to read about

fegus的博客 943

(7)Flink-CheckPoint

目录 1、checkpoint 2、StateBackend 3、Restart Strategies 3、SavePoint 1、checkpoint 默认情况下,checkpoint不会被保留,取消程序时即会删除它们,但是可以通过配置保留定期检查点。开启Checkpoint功能,有两种方式。其一是在conf/flink_conf.yaml中做系统设置;其二是针对任务再代码里灵活配置。推荐第二种方式,针对当前任务设置,设置代码如下所示: //获取flink的运行环境 final Strea

allensandy的博客 1395
上一篇: tf.nn.conv2d(tf.compat.v1.nn.conv2d)函数
下一篇: Flink状态管理器配置
Accelerating
博客等级 码龄9年 3220粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值