Flink 1.13 StateBackend 与 CheckpointStorage 拆分
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 1.13 StateBackend 与 CheckpointStorage 拆分相关的知识,希望对你有一定的参考价值。
1. 目标
Apache Flink 的持久化对许多用户来说都是一个谜。用户最常见反复提问的问题就是不理解 State、StateBackend 以及快照之间的关系。通过学习可以解答我们的一些困惑,但是这个问题如此常见,我们认为 Flink 的用户 API 应该设计的更友好一些。在过去几年中,我们经常会听到如下误解:
- 我们使用 RocksDB 是因为我们不需要容错。
- 我们不使用 RocksDB 是因为我们不想管理外部数据库。
- RocksDB 可以直接读写 S3 或者 HDFS(相对于本地磁盘)
- FsStateBackend 会溢写到磁盘,并且与本地文件系统有关系
- 将 RocksDB 指向网络附加存储,认为 StateBackend 需要容错
邮件列表中的很多问题非常能代表用户在哪里遇到问题,关键是其中许多问题都不是来自新用户!当前的 StateBackend 抽象对于我们许多用户来说太复杂了。所有这些问题的共同点就是误解了数据如何在 TM 上本地存储状态与 Checkpoint 如何持久化状态之间的关系。本文的目的就是介绍 StateBackend 与 Checkpoint 持久化剥离的原因、怎么剥离以及用户怎么迁移。
2. 现状
在 Flink 1.13 版本之前,StateBackend 有两个功能:
- 提供状态的访问、查询;
- 如果开启了 Checkpoint,会周期性的向远程持久化存储上传数据和返回元数据给 JobManager。
以上两个功能是混在一起的,即把状态存储(如何在 TM 上本地存储和访问状态)和 Checkpoint 持久化(Checkpoint 如何持久化状态)笼统的混在一起,导致初学者对此感觉很混乱
以上是关于Flink 1.13 StateBackend 与 CheckpointStorage 拆分的主要内容,如果未能解决你的问题,请参考以下文章
Flink 1.13 StateBackend 与 CheckpointStorage 拆分