有状态流处理:Flink 状态后端
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有状态流处理:Flink 状态后端相关的知识,希望对你有一定的参考价值。
传送门:Flink 系统性学习笔记
Flink 1.12.0
这篇文章我们将深入探讨有状态流处理,更确切地说是 Flink 中可用的不同状态后端。在以下部分,我们将介绍 Flink 的3个状态后端,看一下它们的局限性以及如何根据具体案例需求选择最合适的状态后端。
在有状态的流处理中,当启用了 Flink 的检查点功能时,状态会持久化存储以防止数据的丢失并确保发生故障时能够完全恢复。为应用程序选择何种状态后端,取决于状态持久化的方式和位置。
Flink 提供了三种可用的状态后端:MemoryStateBackend,FsStateBackend 以及 RocksDBStateBackend。
1. MemoryStateBackend
MemoryStateBackend 是将状态维护在 Java 堆上的一个内部状态后端。KeyedState 以及窗口算子都使用哈希表来存储数据值以及定时器。当应用程序进行 Checkpoint 时,状态后端会在将状态发给 JobManager 之前对状态进行快照,JobManager 会将状态存储在 Java 堆上。MemoryStateBackend 默认支持异步快照。异步快照可以避免阻塞数据流处理,从而避免发生反压。
使用 M
以上是关于有状态流处理:Flink 状态后端的主要内容,如果未能解决你的问题,请参考以下文章