赞
踩
尽管数据流中的许多操作一次仅查看一个事件(例如事件解析器),但某些操作会记住多个事件的信息(例如窗口运算符)。这些操作称为有状态。
有状态操作的一些示例:
Flink 需要了解状态,以便使用检查点 和 保存点来使其容错。
关于状态的知识还允许重新缩放 Flink 应用程序,这意味着 Flink 负责在并行实例之间重新分配状态。
可查询状态允许您在运行时从Flink 外部访问状态。
在使用状态时,阅读有关 Flink 的状态后端(Flink`s State Backend)的信息可能也很有用。Flink 提供了不同的状态后端,用于指定状态的存储方式和位置。
键控状态被维持在嵌入式键/值存储中。严格将状态与有状态运算符读取的流一起进行分区和分发。因此,仅在键控流上(即在键控/分区数据交换之后)才可以访问键/值状态,并且仅限于与当前事件的键关联的值。对齐流键和状态键可确保所有状态更新都是本地操作,从而确保一致性而没有事务开销。这种对齐还允许重新分配状态并透明地调整流分区。
Keyed State 被进一步组织成所谓的 Key Groups。密钥组是 Flink 可以重新分配密钥状态的原子单位。与定义的最大并行度完全一样的密钥组。在执行期间,键控运算符的每个并行实例都使用一个或多个键组的键。
Flink 通过结合流重播 和 检查点来实现容错。检查点标记每个输入流中的特定点以及每个运算符的对应状态。通过恢复操作员的状态并从检查点开始重播记录,可以在保持一致性(一次处理语义)的同时从检查点恢复流式数据流。
检查点间隔是在执行期间 与 恢复期间 (需要重播的记录数) 之间权衡容错开销的一种方法。
容错机制连续绘制分布式流数据流的快照。对于状态较小的流应用程序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。