【大数据面试题】007 谈一谈 Flink 背压

news/2024/5/20 4:51:44 标签: 大数据, flink, kafka, hdfs, hadoop

一步一个脚印,一天一道面试题(有些难点的面试题不一定每天都能发,但每天都会写)

什么是背压 Backpressure

在流式处理框架中,如果下游的处理速度,比上游的输入数据小,就会导致程序处理慢,不稳定,甚至出现崩溃等问题。

出现背压的原因

  1. 上游数据突然增大
    比如数据源突然数据量增大多倍,下游处理速度跟不上。就像平时的小饭店能处理的很轻松,突然到了过年人多了很多,就会需要客人排队。

  2. 网络,机器异常等
    这个也好理解,如果 team 里突然有人生病了,会导致效率低下。

  3. 下游复杂度,并行度与上游算子不同
    可能下游算子需要处理更久,或者并行度比上游小,处理的没有上游快,进而可能导致背压。

  4. 数据倾斜
    数据倾斜会导致任务分配不均匀,比如任务平时均匀分给 5 个同事,结果有天数据倾斜,把 3个人的任务分配给了其中一个同事,那么他处理时间就会比其他同事长,进而影响团队进度。

背压导致的影响

背压不一定会导致程序直接崩溃,但它可能会引发一系列其他问题,最终导致系统不稳定甚至崩溃。具体来说,背压可能导致以下情况:

  • 增加处理延迟: 背压会导致数据积压,增加数据处理的延迟。如果背压持续存在且得不到有效解决,处理延迟可能会不断累积,最终使系统无法及时响应或处理数据。

  • 降低系统吞吐量: 由于背压限制了数据流的速率,系统的整体吞吐量可能会下降。这会导致系统无法充分利用资源,处理能力受限,影响系统的性能表现。

  • 资源浪费: 背压可能导致部分计算资源空闲或被浪费,因为某些任务可能没有足够的输入数据来处理。这样就浪费了资源,降低了系统的效率。

  • 系统稳定性问题: 背压如果得不到有效管理和解决,可能会导致数据积压越来越严重,最终可能引发系统的不稳定性。数据积压可能导致内存消耗过大、任务阻塞等问题,最终可能使系统崩溃或不可用。

如何发现,定位背压

背压本质是一种,不健康,亚健康状态,可能会出现超时, 失败等问题

  1. 在 Web 页面发现 Checkpoint 超时,失败
  2. JobManager 中,会找到 Checkpoint expired before completing 报错日志
  3. 在 Web 页面的 在BackPressure 界面可以看到

如何解决背压亚健康问题

  1. 调整并行度:
    背压可能是由于某些任务的并行度过高或过低导致的。通过调整任务的并行度,使其能够更好地匹配数据的产生和消费速度,从而减少背压问题的发生。

  2. 检查点 Checkpoint,水位线 Watermark 更新过快:
    可能是太频繁的更新 Checkpoint

 // 设置Checkpoint相关配置
 env.enableCheckpointing(10 * 1000); // 设置Checkpoint间隔为10秒
 env.getCheckpointConfig().setCheckpointTimeout(30 * 1000); // 设置Checkpoint超时时间为30秒

 // 设置Watermark相关配置
 env.getConfig().setAutoWatermarkInterval(1 * 1000); // 设置每1秒生成一个Watermark
  1. 监控和告警:
    配置监控系统,实时监测任务的状态、指标和背压情况。当发现背压问题时,及时发送告警并采取相应的措施,例如自动调整任务的并行度或资源分配等。使用 MetricGroup 监控。

定位背压 中引用下面文章
https://www.51cto.com/article/686096.html 背感压力,Flink背压你了解多少?
写的非常好,也有部分我暂时没看懂的部分

看到这里的朋友帮忙点下点赞吧~ 这对我非常有帮助,感谢~


http://www.niftyadmin.cn/n/5378704.html

相关文章

已解决ModuleNotFoundError: No module named ‘tensorflow‘异常的正确解决方法,亲测有效!!!

已解决ModuleNotFoundError: No module named tensorflow异常的正确解决方法,亲测有效!!! 文章目录 问题分析 报错原因 解决思路 解决方法 总结 在深度学习和机器学习项目中,TensorFlow是一个极为常用和功能强大…

idea里微服务依赖在maven能install但不能启动

场景:多个微服务相互依赖,install都没问题,jar包都是正常的,就连jar都能启动,为什么在idea里面项目就是不能启动呢,我是懵逼的 所以解决办法就是: 在设置的编译器里面虚拟机选项添加 -Djps.tr…

07-k8s中secret资源02-玩转secret

一、回顾secret资源的简单实用 第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中; 第二步:创建secret资源; 第三步:pod资源引用secret资源&…

WordPress站点如何实现发布文章即主动推送到百度快速收录和普通收录?

我们在WordPress后台成功发布文章之后,如果靠搜索引擎来抓取的话,可能会比较慢,所以十分有必要将我们成功发布的文章马上提交到百度、必应等搜索引擎中。下面boke112百科就跟大家说一说WordPress站点如何实现发布文章即主动推送到百度快速收录…

相机的机身马达有什么用?

新手疑问: 为什么我的尼康D3200相机明明拥有拍视频能力,但是拍摄视频时却不能对焦 科普时间 那是因为你的相机缺少机身马达,并且你所使用的镜头也没有马达!机身马达是用于给镜头提供对焦动力的装置。它的作用是使相机具备自动对焦功能。如…

Mac M2芯片配置PHP环境

Mac M2芯片配置PHP环境 1. XAMPP2. PHPBrew(PHP版本管理)安装php7.4.33版本 参考 1. XAMPP 官网地址 https://www.apachefriends.org/ 安装 安装完成 web server打开后,在打开localhost 成功! 2. PHPBrew(PHP版本管理) 官方文档 https://github.co…

.NET Core MongoDB数据仓储和工作单元模式实操

前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装,这一章节主要讲的是MongoDB用户管理相关操作实操。如:获取所有用户信息、获取用户分页数据、通过用户ID获取对应用户信息、添加用户信息、事务添加用户信息、用户信息修改、用户信息删除…

云计算基础-计算虚拟化-CPU虚拟化

CPU指令系统 在CPU的工作原理中,CPU有不同的指令集,如下图,CPU有4各指令集:Ring0-3,指令集是在服务器上运行的所有命令,最终都会在CPU上执行,但是CPU并不是说所有的命令都是一视同仁的&#xf…