从检查点恢复Apache Flink作业

时间:2016-09-13 14:23:43

标签: rabbitmq apache-flink flink-streaming

我正在使用Apache Flink + RabbitMQ堆栈。我知道有机会手动触发保存点并从中恢复作业,但问题是Flink在成功检查点之后确认消息,并且如果要进行保存点和恢复状态,则会丢失上次成功保存点和上次成功检查点之间的所有数据。有没有办法从检查站恢复工作?这将解决在不可重放数据源(如rabbitmq)的情况下丢失数据的问题。顺便说一句,如果我们有检查点的所有开销,为什么不让用户使用它们呢?

1 个答案:

答案 0 :(得分:4)

从概念上讲,保存点只不过是检查点加上一些元数据。在两种情况下(保存点和检查点),Flink都会创建所有运算符,源和接收器状态的一致检查点。

检查点被视为故障恢复的内部机制。但是,检查点可以是configured to be externalized checkpoints。当作业终止时,外部化检查点不会自动清除,可用于手动重新启动程序。

您对RabbitMQ源的问题在于它违反了Flink的检查点语义,因为它通过在无法重置的检查点上执行某些状态将其推送到外部系统。

触发保存点并立即关闭作业的机制会解决您的问题吗?这样可以防止在获取保存点后触发检查点。

相关问题