Flink1.4 状态概述

有状态的函数和算子在处理单个元素/事件时存储数据,使得状态state成为任何精细操作的关键构件。

例如:

  • 当应用程序搜索某些特定模式事件时,状态将存储迄今为止遇到的事件序列。
  • 当按每分钟/小时/天聚合事件时,状态保存待处理的聚合事件。
  • 在数据流上训练机器学习模型时,状态保存当前版本的模型参数。
  • 当需要管理历史数据时,状态允许访问过去发生的事件。

Flink 需要了解状态,以便使用检查点进行状态容错,并允许流应用程序使用保存点。

对状态进行了解有助于你对 Flink 应用程序进行扩展,这意味着 Flink 负责在并行实例之间进行重新分配状态。

Flink 的可查询状态queryable state功能允许你在 Flink 运行时在外部访问状态。

在使用状态时,阅读有关FlinkState Backends 应该对你很有帮助。Flink 提供不同的 State Backends,并指定状态的存储方式和位置。状态可以位于Java的堆内或堆外。根据你的 State BackendsFlink也可以管理应用程序的状态,这意味着Flink进行内存管理(可能会溢写到磁盘,如果有必要),以允许应用程序保持非常大的状态。State Backends可以在不更改应用程序逻辑的情况下进行配置。

下一步

  • 使用状态:显示如何在Flink应用程序中使用状态,并解释不同类型的状态。
  • 检查点:描述如何启用和配置容错检查点。
  • 可查询状态:解释如何在Flink运行时从外部访问状态。
  • Managed State自定义序列化:讨论为状态自定义序列化逻辑及其升级。

原文:https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/index.html

您的支持将是我继续写作的动力!