title: Flink的状态后端(State Backends)
categories:
- Flink
tags: - flink
date: 2019-08-23 11:38:00
当使用checkpoint时,状态(state)会被持久化到checkpoint上,以防止数据的丢失并确保发生故障时能够完全恢复。状态是通过什么方式在哪里持久化,取决于使用的状态后端。
可用的状态后端
MemoryStateBackend
FsStateBackend
FsStateBackend
注意:如果什么都不配置,系统默认的是MemoryStateBackend
MemoryStateBackend

MemoryStateBackend 是将状态维护在 Java 堆上的一个内部状态后端。键值状态和窗口算子使用哈希表来存储数据(values)和定时器(timers)。当应用程序 checkpoint 时,此后端会在将状态发给 JobManager 之前快照下状态,JobManager 也将状态存储在 Java 堆上。默认情况下,MemoryStateBackend 配置成支持异步快照。异步快照可以避免阻塞数据流的处理,从而避免反压的发生。当然,使用 new MemoryStateBackend(MAX_MEM_STATE_SIZE, false)也可以禁用该特点。
缺点:

Flink的状态后端包括MemoryStateBackend、FsStateBackend和RocksDBStateBackend。MemoryStateBackend默认适用于无状态或小状态作业,不推荐在生产环境使用。FsStateBackend适合处理大状态,适用于高可用方案。RocksDBStateBackend最适合大状态处理任务,支持增量Checkpoint,但单Key大小有限制。选择合适的状态后端需考虑业务场景和状态需求。
最低0.47元/天 解锁文章
717

被折叠的 条评论
为什么被折叠?



