作业重启/取消后还原MapState

时间:2019-01-11 07:42:18

标签: apache-flink

我必须汇总事件流中各种实体的计数/总和。 从kafka接收到事件日志(json str),并填充地图实体名称作为键,值是选择性属性的计数,作为json str。

MapState sourceAggregationMap = getRuntimeContext()。getMapState(sourceAggregationDesc);

为每个事件流重新填充值。

问题是每当作业停止(失败)/取消并且作业重新启动时,映射状态都不会重新初始化/还原。再次从0开始计数。

使用Apache flink 1.6.0 状态后端:rocksdb

1 个答案:

答案 0 :(得分:0)

检查点用于从故障中自动恢复,并且需要明确启用和配置。保存点是手动触发的,用于重新启动和升级。两者都依赖于here详细介绍的相同快照机制。

这些快照捕获分布式管道的整个状态,将偏移量记录到输入队列中,并将整个作业图的状态记录到摄取数据的那一刻起。发生故障时,将重新放回源,恢复状态,并恢复处理。

有了RocksDB状态后端,工作状态就保存在本地磁盘上(在您配置的位置),并且检查点可以持久地持久保存到分布式文件系统中(再次,是可配置的)。取消作业后,通常会删除检查点(因为不再需要它们来进行恢复),但是可以将它们设为configured to be retained。如果您的作业在失败后无法恢复状态,则可能是检查点失败了,或者作业在第一个检查点可以完成之前就失败了。 Web ui的一个部分显示有关检查点的信息,日志中也应包含有用的信息。