当前位置: 首页 > news >正文

Flink非对齐checkpoint踩坑记

使用flink非对齐checkpoint的背景

作业配置如下
jobmanager 配置:2个 1cpu, 8g内存, 10g磁盘
taskmanager配置:250个,每个2slot,8cpu,20g,80g磁盘
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在当前flink任务拓扑如下:
在这里插入图片描述

所有的流处理最后都汇聚到A算子,导致A算子cpu busy 100%,且持续将不下去,引起上游算子背压严重。导致checkpoint的 barrier不能对其,进而导致checkpoint 超时失败。

  1. 刚开始的处理思路:在不扩容,不增加资源开销的情况下解决问题,于是就想到了使用flink 非对齐checkpoint。踩了很多坑,引起下面一系列问题。
  2. 最后的解决思路:增加当前算子的并行度,扩展到原来的3~5倍,并配置独享槽。在这个过程需要抛弃状态,重置kafka的位点到最早,尽量保证数据的正确性,重启作业。这样配置以后整个作业的健康度就好很多,如下:在这里插入图片描述

flink使用非对齐checkpoint的坑

  1. 虽然是flink1.11引入的,但直到flink1.18以后才成熟,
    在flink1.18之前使用,不能扩展并行度,否则会报错如下:
	at org.apache.flink.streaming.runtime.io.recovery.DemultiplexingRecordDeserializer.select(DemultiplexingRecordDeserializer.java:121)at org.apache.flink.streaming.runtime.io.recovery.RescalingStreamTaskNetworkInput.processEvent(RescalingStreamTaskNetworkInput.java:181)at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:128)at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:498)at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:203)at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:809)at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:761)at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:1066)at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:1045)at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:858)at org.apache.flink.runtime.taskmanager.Task.run(Task.java:644)at java.lang.Thread.run(Thread.java:748)

这是flink在1.18之前的bug,官网说明

  1. flink1.18之后虽然可以进行并行度扩展,但是in-flihgt中间态的数据会在checkpoint是保存下来,使得整个checkpoint的数据量剧增几倍到几十倍。
    并且,对其checkpoint可以切换到非对齐checkpoint,但非对齐checkpoint不能切换到对其checkpoint。

极端情况下使用flink非对齐checkpoint的场景

只有在上游被压特别严重,扩容解决不了的情况下;并且substask之前的数据传数数据量(inflight)可控,使得checkpoint可控不至于巨大而引起新的问题,例如:如果checkpoint数据量巨大可能上传到远程分布式文件系统时过慢,或者远程文件系统磁盘性能查导致读写盘时间过长,从而导致checkpoint超时,checkpoint失败。

使用非对齐checkpoint是的配置

#是否启用非对齐检查点,风险巨大,非极端情况下不建议用,flink1.18之后才成熟# 仅当 execution.checkpointing.mode 为 EXACTLY_ONCE 且 execution.checkpointing.max-concurrent-checkpoints 为 1 时,才能启用非对齐检查点。execution.checkpointing.unaligned: trueexecution.checkpointing.max-concurrent-checkpoints:1execution.checkpointing.mode: EXACTLY_ONCE
http://www.dtcms.com/a/523777.html

相关文章:

  • 使用 WebSocket 实现手机控制端和电脑展示端的实时通信,包含断线重连功能。
  • 服装网站建设怎么写wordpress strip_tags
  • 一文讲清:数据清洗、数据中台、数据仓库、数据治理
  • 【C++ STL】探索STL的奥秘——vector底层的深度剖析和模拟实现!
  • STM32CUBEMX安装离线库
  • 体验 Suno v5:最新的 Suno AI 音乐模型
  • 2.4 欧拉集群安装Nova计算服务
  • 贵港网站建设兼职免费广告设计网站
  • Cell Mol Biol Lett|Runx2诱导超级沉默子形成下调Lpl表达:重塑雪旺细胞脂质代谢的新机制
  • 国自然·医工交叉热点|泛癌组织学重建AI模型
  • Python依赖管理与环境迁移实战:Poetry+Docker构建高效开发体系
  • 山西网站建设推荐景区网站如何建设
  • Flutter---CupertinoPicker滚动选择器
  • 全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
  • Python SQLAlchemy模块:从入门到实战的数据库操作指南
  • 天津哪里有做网站的jquery wordpress
  • 流媒体网站建设规划亚马逊网站建设案例
  • PHP 异步IO扩展包 AsyncIO v2.0.0 发布
  • 《信息系统项目管理师》案例分析题及解析模拟题5
  • Jenkins上实现CI集成软件信息Teams群通知案例实现。
  • ZYNQ平台中断服务函数中的变量不加volatile修饰导致的奇怪问题解决
  • 2026年UX/UI五大趋势:AI、AR与包容性设计将重新定义用户体验
  • 网站做跳转自己建网站卖鞋
  • 百度网站服务器外贸网站优化
  • 应广单片机烧录跳线J7专用PCB使用说明
  • Java 前后端加密与编码技术:从概念到实战场景全解析
  • 拒绝笨重,一款轻量、极致简洁的开源接口管理工具 - PostIn
  • 建设银行信用卡网站是哪个茶叶seo网站推广与优化方案
  • vant van-uploader上传file文件;回显时使用imageId拼接路径
  • Java常用中间件整理讲解——Redis,RabbitMQ