State Processor API:如何读写和修改 Flink 应用程序的状态

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了State Processor API:如何读写和修改 Flink 应用程序的状态相关的知识,希望对你有一定的参考价值。

Flink 1.9

无论是在生产环境中运行 Apache Flink 还是在调研 Apache Flink,总会遇到一个问题:如何读写以及更新 Flink Savepoint 中的状态?为了解决这个问题,在 Apache Flink 1.9.0 版本引入了 State Processor API,扩展 DataSet API 实现读写以及修改 Flink Savepoint 和 Checkpoint 中状态。

在这篇文章中,我们解释了为什么说这个特性是 Flink 前进的一大步,以及该特性的用途和用法。最后,我们会讨论 State Processor API 的未来规划,以及如何与 Flink 流批统一的未来整体规划保持一致。

1. Flink 1.9 之前的状态流处理

几乎所有重要的流处理应用程序都是有状态的,其中大多数都需要运行数月或者数年。随着时间的推移,这些作业累积了很多有价值的状态,如果由于失败而丢失,重建这些状态代价非常大,甚至可能都无法重建。为了保证应用程序状态的一致性和持久性,Flink 从一开始就设计了完善的 Checkpoint 和恢复机制。随着每个版本的发布,Flink 社区都会添加与状态相关的功能,来提高 Checkpoint 和故障恢复的速度、改善应用程序维护和管理。

然而,Flink 用户经常提起的一个需求就是能够’从外部’访问应用程序的状态。这个需求的动机是验证或者调试应用程序的状态、将应用程序的状态迁移到另一个应用程序、将应用程序从 Heap State Backend 改为 RocksDB State Backend,或者导入来自外部系统(如关系数据库)中应用程序的初始状态。

尽管这些需求的出发点都是合理的,但到目前

以上是关于State Processor API:如何读写和修改 Flink 应用程序的状态的主要内容,如果未能解决你的问题,请参考以下文章

Flink 通过 State Processor API 实现状态的读取和写入

FlinkFlink 通过 State Processor API 实现状态的读取和写入

如何在apache camel DSL或camel Processor内部设置其他身份验证属性?

Filebeat和pipleline processor-不部署logstash,实现对数据的处理

Node API 占用 100% CPU,node-tick-processor 输出看起来很神秘

如何使用Java API读写HDFS