文章目录
有状态计算
state 是存储在内存中的。
使用外部存储会存在的问题?
- 频繁的网络 IO
- 算子中间会存在 Blocking,资源利用率下降
自己实现中间状态存储会存在的问题?以及如何解决?
- 系统宕机,中间状态数据的丢失
- 内存或者磁盘大小有限
- 数据一致性
解决:每隔一段时间刷新到磁盘或者外部存储介质上。
状态类型与应用
状态应用场景
- 去重
- 窗口计算的中间结果的存储
- 机器学习,深度学习等
- 历史数据获取
Keyed State 是针对于每一个 Key 都存储一份 state 数据,而 Operator State 是针对于一个算子整体存储一份数据。
- 两者区别:
CheckPoint 实现原理
作用:其实就是持久化
作用:其实就是持久化
- Job manager 会使用 CheckPoint coordinator 向所有 source 节点触发 barrier 事件。
- 依次广播 barrier 事件 ,并将自己的状态持久化
- 当每个 task 完成备份后,会将备份数据的地址通知给 CheckPoint coordinator
SavePoint 实现原理(特殊的CheckPoint)
- checkPoint 的目标:意外崩溃重启的保证,配合重启策略使用。
- SavePoint 的目标:人工作业起停。
两个 point 都基于状态运行。