3种Flink State Backed| 你该用哪个?

本文深入探讨了Flink的三种状态后端——MemoryStateBackend、FsStateBackend和RocksDBStateBackend,包括各自的吞吐量、延迟特性和适用场景。MemoryStateBackend适合小状态任务,FsStateBackend适用于大状态和高可用场景,而RocksDBStateBackend是处理超大状态的最佳选择,支持增量checkpoint。

简介

01 .不同 State backend 吞吐量对比

02 .不同 State backend 延迟对比

03. State backend 的选择

04. MemoryStateBackend

MemoryStateBackend的局限性

MemoryStateBackend适用场景

05. FsStateBackend

FsStateBackend的局限性

FsStateBackend适用场景

06. RocksDBStateBackend

RocksDBStateBackend的局限性

RocksDBStateBackend适用场景


简介

本文主要讲述Flink有状态的流处理中所提供的各种状态后端(state backend) 。本文将介绍Flink当前所提供的3种状态后端的优缺点以及在具体需求案例中如何去做选择。

在有状态的流处理(stateful-steam-processing)中,为了发生故障时能够完全恢复故障前的数据, 开发者通常会在使用Flink时设置checkpoint。在使用checkpoint时候,通常要涉及到状态后端的选择以决定持久化的状态的存储方式与位置。

Flink 当前提供了以下3种开箱即用的状态后端:

  • MemoryStateBackend

  • FsStateBackend

  • RocksDBStateBackend

在缺省情况下,Flink默认使用 MemoryStateBackend。

01 .不同 State backend 吞吐量对比

FileSystem(FsStateBackend)和Memory(MemoryStateBackend)的吞吐差异不大(都是使用TaskManager堆内存管理处理中的数据),使用 RocksDB 的吞吐差距明显。

Standalone 和 on Yarn 的总体差异不大,使用 FileSystem 和 Memory 时 on Yarn 模式下吞吐稍高,而使用 RocksDB 时 on Yarn 模式下的吞吐低些。

02 .不同 State backend 延迟对比

使用 FileSystem 和 Memory 时延迟基本一致且较低。

使用 RocksDB 时延迟稍高,且由于吞吐较低,在达到吞吐瓶颈附近延迟陡增。其中 on Yarn 模式下吞吐更低,延迟变化更加明显。\

03. State backend 的选择

StatBackend in-flight CP 吞吐 推荐场景
MemoryState TM Memory JM Memory 开发与调试、对数据丢失或重复不敏感
FsState TM Memory FS/ HDFS 普通状态、大窗口、KV 结构
RocksDBState
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值