七、Flink入门--状态管理

本文介绍了Apache Flink的状态管理,包括状态概述、类型与使用示例,重点讲解了为何需要管理状态以及理想的管理标准。此外,还详细阐述了Flink的容错与状态恢复机制,如通过checkpoint实现数据一致性,并讨论了状态的保存、恢复及存储方式。
摘要由CSDN通过智能技术生成

1.状态概述

1.1什么是状态?

无状态计算指的是数据进入Flink后经过算子时只需要对当前数据进行处理就能得到想要的结果,有状态计算就是需要和历史的一些状态或进行相关操作,才能计算出正确的结果
状态的使用场景:

  • 去重,需要记录哪些数据出现过,哪些没出现过
  • 窗口计算,比如计算一个小时的counter
  • 机器学习,训练模型
  • 访问历史数据,需要与昨天的数据进行对比,历史数据放在状态里
1.2为什么要管理状态?

流式作业的特点是7*24小时运行,数据不重复消费,不丢失,保证只计算一次,数据实时产出不延迟,但是当状态很大,内存容量限制,或者实例运行奔溃,或需要扩展并发度等情况下,如何保证状态正确的管理,在任务重新执行的时候能正确执行,状态管理就显得尤为重要。

1.3理想的状态管理

理想的状态管理是:

  • 易用,flink提供了丰富的数据结构,简洁易用的接口
  • 高效,flink对状态的处理读写快,可以横向扩展,保存状态不影响计算性能
  • 可靠,flink对状态可以做持久化,而且可以保证exactly-once语义

2.状态类型与使用示例

Flink中有两种基本的State: Keyed State 和 Managed State

2.1 Keyed State & Operator State
keyed state operator state
适用场景 只能应用在KeyedSteam上 可以用于所有的算子
state处理方式 每个key 对应一个 state,一个operator处理多个key ,会访问相应的多个state 一个operator对应一个state
并发改变 并发改变时,state随着key在实例间迁移 并发改变时需要你选择分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值