Flink 可查询状态是如何工作的
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 可查询状态是如何工作的相关的知识,希望对你有一定的参考价值。
传送门:Flink 系统性学习笔记
QueryableStates 允许用户对流的内部状态进行实时查询,而无需将结果存储到任何外部存储中。 这制造了许多有趣的可能,因为我们不再需要等待系统写入外部存储(这一直是此类系统的主要瓶颈之一)。 甚至可能没有任何类型的数据库能让用户的应用程序直接查询流,这将使应用程序更快、更便宜。 这可能不适用于所有用例,但如果您的 Pipeline 必须维护内部状态(可能是进行一些聚合),则最好使状态可用于查询。
我们首先看看当我们使状态可查询以及何时查询时,在 Flink 内部的整体步骤。
1. 使状态可查询
假设我们已经创建了一个具有可查询状态的 Pipeline 并通过 JobClient 提交了作业。下图显示了 Flink 内部发生的事情:
我希望这个图是不言自明的,但总而言之,一旦提交了 Job,JobManager 就会从 JobGraph 构建 ExecutionGraph,然后将任务部署到 TaskManager。在创建任务实例时,会创建 Operator,如果发现 Operator 是可查询的,则对 Operator 的 ‘状态’ 的引用将保存在 KvStateRegistry 中,并带有一个状态名称。状态名称是在创建作业期间设置的唯
以上是关于Flink 可查询状态是如何工作的的主要内容,如果未能解决你的问题,请参考以下文章
Flink中的RocksDBStateBackend:它是如何工作的?