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

一文讲透 Flink State Backend 与 Checkpoint Storage

一、引言在 Flink 1.13 版本之前StateBackend接口是一个“大杂烩”它同时负责两件事状态的本地访问与存储Task 运行时状态存在哪内存还是 RocksDBCheckpoint 数据的持久化做快照时状态备份到哪JobManager 还是 HDFS这种设计导致了概念上的混淆例如FsStateBackend运行时其实使用的是 TaskManager 的堆内存但名字却带有 Fs。为了让职责更清晰Flink 1.13 正式将这两者解耦。概念职责类比State Backend管理运行时状态的存储与访问方式相当于内存/磁盘——决定你在工作时把数据放在哪里Checkpoint Storage管理检查点快照的持久化存储位置相当于备份仓库——决定你把备份数据存到哪里二、State BackendState Backend 决定了运行时状态数据的存储介质和访问方式目前主推两种 State Backend。1.HashMapStateBackend状态以 Java 对象形式直接存储在 TaskManager 的 JVM 堆内存中读写速度最快直接内存访问无序列化/反序列化开销状态大小受限于 JVM 堆内存容量不支持增量 Checkpoint每次 Checkpoint 需要全量序列化整个状态2.EmbeddedRocksDBStateBackend状态存储在 TaskManager 本地磁盘上的嵌入式 RocksDB 实例中读写涉及序列化/反序列化Java 对象 ↔ byte[]有一定性能开销状态大小仅受限于本地磁盘容量可以管理超大规模状态TB 级别支持增量 Checkpoint基于 RocksDB SST 文件的增量上传RocksDB 的 Block Cache 和 Write Buffer 会占用 堆外内存Off-Heap3.两种StateBackend对比维度HashMapStateBackendEmbeddedRocksDBStateBackend存储介质JVM 堆内存本地磁盘RocksDB访问速度⚡ 极快直接内存访问 较慢涉及序列化 磁盘I/O状态规模上限受限于堆内存通常 GB 级受限于磁盘可达 TB 级增量 Checkpoint❌ 不支持✅ 支持内存管理JVM GC 管理Flink Managed Memory 管理典型吞吐量影响对吞吐量影响小约降低 30%~50%取决于状态访问频率适用场景小状态、高吞吐大状态、超大 Key 数量三、Checkpoint StorageCheckpoint Storage 决定了Checkpoint 快照数据的持久化位置目前主推两种 Checkpoint Storage。1.JobManagerCheckpointStorageCheckpoint 数据通过 RPC 发送至 JobManager存储在其堆内存中每个独立状态的大小上限默认为 5 MB可配置MAX_STATE_SIZE仅适用于本地开发/测试生产环境绝不应使用作业失败时如果 JobManager 也崩溃Checkpoint 数据丢失2.FileSystemCheckpointStorageCheckpoint 数据写入分布式文件系统具备高可用性和持久性小状态默认阈值 20KB仍会内联存储在_metadata文件中避免创建过多小文件生产环境唯一推荐的 Checkpoint Storage支持与 EmbeddedRocksDBStateBackend 配合实现增量 Checkpoint3.Checkpoint完整流程步骤说明涉及组件①CheckpointCoordinator 按配置的间隔周期性触发JobManager②Checkpoint Barrier 作为特殊事件插入数据流Source → 下游③多输入算子等待所有 Channel 的 Barrier 到齐对齐模式Operator④同步阶段创建状态快照的引用非常快通常 ms 级State Backend⑤异步阶段将状态数据写入持久化存储可能耗时较长Checkpoint Storage⑥TaskManager 向 JobManager 报告该算子的 Checkpoint 完成TM → JM⑦所有算子 Ack 后Checkpoint 被标记为完成JobManager四、State Backend与Checkpoint Storage关系旧版 ( 1.13已废弃)等价的新版组合 (≥ 1.13)MemoryStateBackendHashMapStateBackend JobManagerCheckpointStorageFsStateBackendHashMapStateBackend FileSystemCheckpointStorageRocksDBStateBackendEmbeddedRocksDBStateBackend FileSystemCheckpointStorage在Flink现在新版本的使用中两者结合的组合矩阵建议如下组合State BackendCheckpoint Storage适用性AHashMapStateBackendJobManagerCheckpointStorage⚠️ 仅开发/测试BHashMapStateBackendFileSystemCheckpointStorage✅ 生产推荐中小状态CEmbeddedRocksDBStateBackendJobManagerCheckpointStorage❌ 不推荐无实际意义DEmbeddedRocksDBStateBackendFileSystemCheckpointStorage✅ 生产推荐大状态以下是大多数生产环境下的推荐配置适用于大状态、高可用场景# State Backend state.backend: rocksdb state.backend.incremental: true state.backend.rocksdb.localdir: /data1/flink/rocksdb,/data2/flink/rocksdb state.backend.rocksdb.memory.managed: true state.backend.rocksdb.predefined-options: FLASH_SSD_OPTIMIZED # Checkpoint Storage state.checkpoint-storage: filesystem state.checkpoints.dir: hdfs:///flink/checkpoints state.savepoints.dir: hdfs:///flink/savepoints # Checkpoint 行为 execution.checkpointing.interval: 2min execution.checkpointing.mode: EXACTLY_ONCE execution.checkpointing.timeout: 10min execution.checkpointing.min-pause: 1min execution.checkpointing.max-concurrent-checkpoints: 1 # 保留策略 state.checkpoints.num-retained: 3 # 内存配置 taskmanager.memory.managed.fraction: 0.4
http://www.zskr.cn/news/1369841.html

相关文章:

  • 测试新人如何入门接口测试?基于 Apifox 从零到实战全指南
  • 深度解析Mesa 3.0:高性能多智能体建模的工程化架构设计
  • 初创团队如何借助Taotoken以可控成本启动AI产品开发
  • 别再被GPG签名卡住了!手把手教你修复老版本Kali Linux的apt更新源报错
  • 如何用NightX Client彻底改变你的Minecraft 1.8.9游戏体验?终极功能解析
  • llama-cpp-python深度解析:5个核心技巧构建本地AI推理引擎
  • 3步搞定Switch游戏安装:Awoo Installer终极兼容性解决方案
  • Android Studio中文界面汉化终极指南:5分钟告别英文困扰
  • 028、原理图ERC检查与常见错误排查
  • 卖不锈钢板材管材怎么找客户?下游工厂在哪里
  • 3大止损策略拯救你的交易:backtrader实战指南(附代码模板)
  • Scroll Reverser终极指南:macOS滚动方向管理的智能解决方案
  • 3步解决:LOOT排序规则库如何彻底终结天际模组冲突噩梦
  • 为 OpenClaw 配置 Taotoken 作为后端以支持稳定可靠的 Agent 工作流
  • 明日方舟游戏素材资源库:创作者与开发者的数字宝藏
  • OpenClaw新手进阶:从基础操作到自动化流程搭建,7天入门实战计划
  • CleanMyWechat终极指南:如何快速释放微信占用的数十GB磁盘空间
  • 从P0事故复盘看DeepSeek过滤规则链断裂:1个正则表达式引发的全站审核阻塞(含热修复patch)
  • OpenClaw对接小众工具失败?专属适配方案+报错代码详解
  • Java开发者如何快速接入Taotoken实现多模型调用
  • 3大特性深度解析:开源包管理工具VPKEdit如何提升游戏开发效率
  • 明日方舟游戏素材资源集:如何轻松获取高质量游戏资源?
  • 为什么头部AI团队已在灰度接入V3?——基于17个企业级LLM应用的兼容性压力测试报告
  • 分布式接口幂等性设计:唯一索引、Token 与分布式锁
  • 分布式事务方案:Seata XA、AT、TCC 与 MQ
  • Taotoken审计日志功能在团队协作与安全排查中的作用
  • Taotoken 的 Token Plan 套餐如何帮助项目更精准地控制预算
  • 终极OBS计时器插件指南:7个技巧让直播时间管理变得简单
  • ZetaChain 是一条内置跨链托管与消息传递的 Layer 1
  • 渗透测试入门真相:不是黑进系统,而是验证风险