Flink问题解决及性能调优-【Flink rocksDB读写state大对象导致背压问题调优】

RocksDB是Flink中用于持久化状态的默认后端,它提供了高性能和可靠的状态存储。然而,当处理大型状态并频繁读写时,可能会导致背压问题,因为RocksDB需要从磁盘读取和写入数据,而这可能成为瓶颈。

遇到的问题

Flink开发中遇到读写state大对象的问题,Flink webUI 火焰图表现如下:
在这里插入图片描述从图上看,瓶颈卡在序列化与反序列化,结合业务逻辑代码,业务涉及state大对象的读写,并且是ValueState。

问题分析

如上,作为初学者来说,如果要在键值状态中存储Map<K, V>数据结构的状态,可能会认为使用ValueState<HashMap<K, V>>或者使用MapState<K, V>都是可行的。

如果我们选择使用HashMap状态后端,那么两种方式的性能上不会有很大差异,但是如果我们选择使用RocksDB状态后端,则推荐使用MapState<K, V>,避免使用ValueState<HashMap<K, V>>。

  • 因为ValueState<HashMap<K, V>>在将数据写入RocksDB时,是将一整个HashMap<K, V>序列化为字节数组之后写入的。
  • 同样,在读取时,也是先读取到字节数组,然后反序列化为一整个HashMap<K, V>后,再给用户使用。

所以每次访问和更新ValueState时,实际上都是对HashMap<K, V>这个集合类的大对象做序列化以及反序列化(如上图所示),而这是一个及其耗费资源的过程,很容易就会导致Flink作业产生性能瓶颈,所以极不推荐在ValueState中存储大对象。

问题调优

使用MapState代替ValueState,精简state数据量,问题解决。
除此之外还有一些其他调优策略:

  1. 增加算子并行度:通过增加算子的并行度,可以将负载分布到多个任务实例上,从而提高整体处理能力。这样可以减少单个任务实例的读写压力。

  2. 增加RocksDB的内存限制:RocksDB使用内存来缓存热数据,可以通过增加RocksDB的内存限制来提高缓存效果。可以通过Flink的配置选项state.backend.rocksdb.memory.managed来设置内存限制。

  3. 调整RocksDB的配置参数:RocksDB有许多配置参数可以调整,以优化读写性能。可以根据具体情况调整参数,例如write_buffer_size、max_write_buffer_number、max_background_compactions等。

  4. 使用异步快照:Flink提供了异步快照机制,可以将状态异步地持久化到RocksDB。这可以减少同步写入RocksDB的开销,并提高整体吞吐量。

  5. 定期进行状态清理和压缩:定期清理过期的状态数据和进行状态压缩可以减少磁盘占用和提高读写性能。可以使用Flink的状态后端接口进行定期的清理和压缩操作等等。

拿当前实例来说,虽然调优有很多种方式,例如:可以通过增量subtask并行度来提高处理能力(数据量大了还是会出现处理上的瓶颈,不可持续),但并没有找出问题的根本原因,或者说调优最大化。通过使用MapState代替ValueState,精简state数据量,可以达到调优最大化,以最小的代价解决最大的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世微AP5125 LED外置MOS降压恒流驱动IC 12-36V 9V 1A驱动方案

本品特点&#xff1a;宽输入电压范围&#xff1a;9V&#xff5e;100V ◆ 固定工作频率&#xff1a;140KHZ◆ 可设定电流范围&#xff1a;10mA&#xff5e;6000mA ◆ 内置抖频电路&#xff0c;降低对其他设备的 EMI 干扰◆ 平均电流模式采样&#xff0c;恒流精度更高◆ CS 电压…

136832-63-8,活细胞示踪剂CMFDA(绿色),5-氯甲基荧光素二醋酸酯,广泛应用于细胞追踪和标记实验中

136832-63-8&#xff0c;活细胞示踪剂CMFDA(绿色)&#xff0c;5-氯甲基荧光素二醋酸酯&#xff0c;CellTracker Green CMFDA&#xff0c;可以用于基因表达分析等实验中&#xff0c;广泛应用于细胞追踪和标记实验中 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;1…

c语言学习笔记之字符串库函数和逗号表达式

逗号表达式 #include <stdio.h>int main(){int a 10;int b 5;int c 6;int d (a 23,b a-4,c b2);printf("%d",d); }打印结果为: 逗号表达式,从左往右依次进行,将最后一个表达式的值赋值给变量. c语言字符串相关库函数 求字符串长度strlen长度不受限制的…

Qt开源版 vs 商业版 详细比较!!!!

简单整理Qt开源版与商业版有哪些差别&#xff0c;仅供参考。 简单对比 开源版商业版许可证大部分采用对商业使用不友好的LGPLv3具备商业许可证保护代码专有许可证相关大部分模块使用LGPLv3和部分模块使用GPL组成仅第三方开源组件使用Qt的其他许可证Qt模块功能支持支持技术支持…

海外云手机为什么吸引用户?

近年来&#xff0c;随着全球化的飞速发展&#xff0c;海外云手机逐渐成为各行各业关注的焦点。那么&#xff0c;究竟是什么让海外云手机如此吸引用户呢&#xff1f;本文将深入探讨海外云手机的三大吸引力&#xff0c;揭示海外云手机的优势所在。 1. 高效的社交媒体运营 海外云…

c#窗体捕捉方向键

方法1 实现方法参考代码&#xff1a; private void Form1_Load(object sender, EventArgs e){this.KeyPreview true;}protected override bool ProcessDialogKey(Keys keyData){if (keyData Keys.Left || keyData Keys.Right || keyData Keys.Up || keyData Keys.Down){s…

工程经验分享 Incremental FastPitch

分享 NVIDIA 基于 GPU 的 TTS 解决方案介绍。 1. 基于 FastPitchHifi-GAN 的 Streaming TTS 效果优化 NVIDIA 在 TTS 领域也做了一些供大家参考的工作&#xff0c;例如提供了高效的流式 TTS 部署方案&#xff0c;利用 TensorRT 加速模型推理速度&#xff0c;并通过 Triton Inf…

【软考- 系统集成项目管理工程师2】

第一章-信息化知识-信息与信息化 今日座右铭&#xff1a;最好的偷懒方式&#xff0c;就是一次做好。 文章目录 第一章-信息化知识-信息与信息化前言一、信息1、信息的基本概念2、信息的传输模型3、信息的质量属性 二、信息系统1、系统的基本概念2、信息系统的生命周期 三、信息…

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方&#xff0c;会自动出现提示

【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 归并排序 代码实现&#xf…

pin to pin替代TI DRV8872的GLOBALCHIP直流电机驱动芯片GC8872,低成本、宽电压,内置电荷泵,短地短电源保护,限流

在现如今电机驱动芯片处于持续涨价的状态下&#xff0c;并且供货期货期长&#xff0c;偶尔缺货的状态下。为了降低设计成本&#xff0c;第一时间设计出优秀的产品占据市场高位。我这边推荐使用浙江GLOBALCHIP国产电机驱动芯片进行替换设计。供货稳定、价格低廉。GC8872是GLOBAL…

Flink实战三_TableAPISQL

接上文&#xff1a;Flink实战二_DataStream API 1、Table API和SQL是什么&#xff1f; 接下来理解下Flink的整个客户端API体系&#xff0c;Flink为流式/批量处理应用程序提供了不同级别的抽象&#xff1a; 这四层API是一个依次向上支撑的关系。 Flink API 最底层的抽象就是有…

CSS之webkit内核中的属性text-stroke

让我为大家介绍一下text-stroke 大家是否想过要弄一个描边过的文字&#xff0c;接下来&#xff0c;text-stroke就可以为你解决 text-stroke是一个复合属性&#xff0c;里面有两个参数&#xff1a;描边的尺寸 描边的颜色 <!DOCTYPE html> <html lang"en">…

[AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

蓝桥杯备战——10.超声波模块

1.分析原理图 蓝桥杯单片机板子的原理图做的简直是依托答辩&#xff0c;乱糟糟的不说还弄成黑白的&#xff0c;明明很简单的东西&#xff0c;弄成一大堆。 可以看到&#xff0c;J2跳线帽如果P10接N_A1,P11接N_B1就是用作超声波功能。N_A1用作发生超声波功能&#xff0c;而N_B1…

Android开发之UI控件

TextView 实现阴影效果的textview android:shadowColor"#ffff0000" 设置阴影颜色为红色android:shadowRadius"3" 设置阴影的模糊程度为3android:shadowDx"10" 设置阴影在水平方向的偏移android:shadowDy"10" 设置阴影在竖直方向的偏…

PyFlink使用教程,Flink,Python,Java

环境准备 环境要求 Java 11 Python 3.7, 3.8, 3.9 or 3.10文档&#xff1a;https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/python/installation/ 打开 Anaconda3 Prompt > java -version java version "11.0.22" 2024-01-16 LTS J…

Nginx 1.25配置QUIC和HTTP3

Nginx 1.25配置QUIC和HTTP/3 Nginx在编译时需要配置相应的SSL库&#xff0c;以确保能够支持HTTP3.0和HTTP2.0等基于HTTPS的协议。这些加密算法主要由OpenSSL提供。另外&#xff0c;BoringSSL是谷歌创建的OpenSSL分支&#xff0c;专门用于支持TLS 1.3的UDP协议的0-RTT数据传输加…

2024 年人工智能(AI)会有哪些新趋势和新突破?无际Ai分享

随着科技的不断发展&#xff0c;人工智能领域正在以惊人的速度迈向前所未有的高度。在 2024 年&#xff0c;我们可以期待看到多个领域的重大突破&#xff0c;这将为人工智能技术带来新的应用和可能性。 以下是一些可能出现的新领域和突破性进展&#xff1a; 强化学习应用拓展&…

MySQL前百分之N问题--percent_rank()函数

PERCENT_RANK()函数 PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算,用以求MySQL中前百分之N问题。其中&#xff0c;rank为RANK()函数产生的序号&#xff0c;rows为当前窗口的记录总行数 PERCENT_RANK()函数返回介于 0 和 1 之间的小数值 selectstudent_…