文章目录
有状态计算
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 都基于状态运行。
本文深入探讨了有状态计算中使用外部存储的问题,如频繁的网络IO和资源利用率下降,以及自行管理中间状态可能导致的数据丢失和一致性问题。为解决这些问题,提出了定期刷新到持久化存储的策略。此外,介绍了状态类型如KeyedState和OperatorState及其应用场景,如去重、窗口计算和机器学习。CheckPoint和SavePoint作为状态持久化的手段,确保意外崩溃后的恢复。最后,讨论了反压机制在流处理中的作用。

141

被折叠的 条评论
为什么被折叠?



