分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

news2024/7/4 4:44:05

文章目录

  • 背景
    • 分析
  • 问题来了
  • 比较一开始的情况
  • 解决方式


背景

之前有分析过一次类似问题,最终结论是在keyby之后,其中有一个key数量特别庞大,导致对应的subtask压力过大,进而使得整个job不再继续运作。在这个问题解决之后,后续又再次出现了积压的情况,针对这个问题进行排查分析。


分析

通过以下这张图,可以看到当前它是没有数据积压的。
在这里插入图片描述
可以看到source-map-map-sink/map都放在了同一个task中,因为Flink的operator chain(算子链)机制,数据是通过调用链接算子的processElement()方法,直接将数据推给下游处理了。这里有300个并行度,也就是有300个subtask,每个算子之间都是一一对应的,如果其中一个并行度的源一直没有消费到数据,那么它的下游就一样会是空闲的
在这里插入图片描述
通过这张图可以看到有的subtask根本就没有在处理数据,而有的处理的是大量的数据。那这种肯定不是我们想要的。这种情况,资源存在浪费。
在这里插入图片描述
在前后并行度不一致的时候,task之间就会默认采用rebalance做负载均衡
在这里插入图片描述
可以看到这种情况下,下游每个task处理的数据是比较平均的,在经过均衡之后
在这里插入图片描述

问题来了

到了这里就发现了个问题,竟然出现了严重的阻塞问题。
但仔细一看,并不是所有下游的subtask都是busy。
在这里插入图片描述
这种均衡之后部分阻塞的问题,经过代码,和实际的数据结合分析,我得出的结论是有一类数据,需要处理的时间是其他数据的几十倍。rebalance是轮询分配的,在某几个task接收到大量该类数据,导致它的运行压力直线上升,进而使得分配到此处时塞不进去了。即导致整体的阻塞。

比较一开始的情况

那么一开始为什么就没有阻塞呢,这一下就让人非常费解,明明rebalance负载均衡之后应该压力更小,更能够消费得过来才对,怎么现在就消费不来了呢。
在task中看到这样的日志,因为消费不来,很多该类topic的数据被丢弃了,因为没有阻塞,所以其他topic也就都能够正常消费。
在这里插入图片描述

解决方式

所以要解决这个问题的根本方式有两种
1、先把同一种数据需要耗费的时间与其他方式耗费时间差距较大的,进行缩小差距。
2、优化代码,让算子中的效率增加,处理每一条数据的时间减小
3、加大资源,增加并行度

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

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

相关文章

数据分析15——office中的Excel基础技术汇总

0、前言: 这部分总结就是总结每个基础技术的定义,在了解基础技术名称和定义后,方便对相关技术进行检索学习。笔记不会详细到所有操作都说明,但会把基础操作的名称及作用说明,可自行检索。本文对于大部分读者有以下作用…

火山引擎DataLeap:助力PICO落地数据流程规范,提升开发效率

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 作为目前中国市场领跑的头部XR品牌之一,字节跳动旗下的PICO已经拥有了超百万客户。 过去一年,PICO在XR场景中不断建设和发力,为运…

更好的 3D 网格,从重建到生成式 AI

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 这些生成的 3D 模型通常提取为标准三角形网格。网格表示提供了许多好处,包括支持现有软件包、高级硬件加速和支持物理仿真。但是,并非所有网格都是平等的,这些优势只…

在南非发现地球上最古老冰川的证据

古老的冰川暗示着太古代地球在某些方面可能与我们所处的时代相似。 29 亿年前的地球可能有像阿根廷南部冰川国家公园的佩里托莫雷诺冰川这样的冰川。图片来源: Martin St-Amant/维基百科 《地球化学展望快报》上发表的一项 新研究报告称,早在 30 亿年前…

离心机使用操作说明(记录备忘)

关于离心机的使用步骤做一简单记录 1.配准 2.装载(对称性放置) 3.确认(装载完毕之后确认,轻轻转动) 4.盖锅盖 5.关闭主盖 6.设置参数 7.运行 开始加速之后 转速会持续增加至设定值,离心结束后&#xff0c…

Python functools module 的介绍与应用

Python functools module 的介绍与应用 functools module lru_cache from functools import lru_cache import timelru_cache(maxsizeNone) # 设置缓存大小为无限制 def my_function(x):for i in range(1000):x xfor j in range(100):x xreturn x# 第一次调用函数&#xff…

概念解析 | 群像素激光雷达

群像素激光雷达技术解析 注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:群像素激光雷达技术。 1. 背景介绍 激光雷达作为一种主动式激光探测技术,通过发射脉冲激光并接收其反射回波信号,来获取目标距离和其他信息,在军事侦察…

收支明细高效管理,轻松查看和统计时间段内的开销收支明细!

亲爱的用户们,您是否经常需要查看某一时间段内的所有开销和收支明细,并进行自动统计和分析?现在,我们为您带来一款智能财务管家,让您轻松管理财务! 首先,我们要进入晨曦记账本主页面&#xff0…

【c语言】通讯录(动态版+文件+背景音乐)含源码

开饭了,之前写的通讯录,是否会有人觉得申请1000人的空间是不是有点用不上呀,怎么才能做到要多少申请多少个呢??我们学完动态内存管理,和文件的相关操作,终于可以继续完善我们的通讯录了 船新版本…

Python异常处理:优雅应对错误与异常

文章目录 🍀引言🍀异常的概念🍀 try-except块🍀多个except块🍀else块🍀finally块🍀异常类型🍀抛出异常🍀异常处理的最佳实践🍀异常处理的现实应用&#x1f34…

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中,有些对象由于某种原因(比如对象创建的开销很大,或者对象的一些操作需要做安全控制,或者需要进程外的访问等),会使Client使用者在操作这类对象时可能会存在问题&…

k8s ingress

一、浅谈ingress (ingress 是与service配合使用的) Ingress能把Service(Kubernetes的服务)配置成外网能够访问的URL,流量负载均衡,及SSL,并提供域名访问的虚拟主机等,客户通过访问UR…

【C++学习手札】一文带你认识C++虚函数(内层剖析)

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C初识继承 ♈️今日夜电波:No title —REOL 1:02 ━━━━━━️💟──────── 4:03 …

无涯教程-Perl - use函数

描述 此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- BEGIN { require "Module.pm"; Module->import(); }也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在…

【网络】网络层——IP协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 网络层中,IP协议首部和有效载荷组成的完整数据称为数据报。 IP协议 🍉TCP和IP的…

文件批量管理,如何将文件进行一一复制备份并删除原文件里的文件

您是否经常需要对大量的文件进行复制备份和删除操作?是时候拥有一款高效的文件批量管理工具了!我们的一键批量管理软件为您提供了简单而强大的解决方案,让您轻松地进行文件复制备份并删除原文件,让存储空间得到高效整理&#xff0…

为什么浙大MBA项目提前批面试要控制优秀人数比例?

大家好!时间来到八月份,不知道今年浙大MBA项目的提前批面试你是否已经申请参加过?从剩余批次来看,留给考生做选择的时间确实不是很多了,仅剩的几个批次中,只有杭州第五批目前时间上还算充裕,其余…

Talk | ACL‘23 杰出论文奖上海交通大学吴蔚琪:预训练语言模型对本体知识的记忆与理解

本期为TechBeat人工智能社区第523期线上Talk! 北京时间8月17日(周四)20:00,上海交通大学硕士研究生—吴蔚琪的Talk已准时在TechBeat人工智能社区开播! 她与大家分享的主题是: “预训练语言模型对本体知识的记忆与理解”,分享了预训…

八股文之八大排序(C++)

目录 1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序(桶排序) 9.主函数 10.画图总结 1.直接插入排序 int ai[] 为需要排序的数组 start 为起始位置,要求 start>1 ,因为 ai[0…

python基础4——类、异常处理、常用模块

文章目录 一、类二、python异常处理三、自定义模块3.1 保留模块测试代码3.2 添加模块使用说明 四、内置模块4.1 os标准库4.2 os.path类4.3 sys库4.4 platform库4.5 glob库4.6 random库4.7 subprocess库4.8 pickle库4.9 JSON库4.10 time库4.11 datetime库4.12 urllib库4.12.1 re…