【问题标题】:Restore Apache Flink job from checkpoint从检查点恢复 Apache Flink 作业
【发布时间】:2017-12-15 02:55:13
【问题描述】:

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

【问题讨论】:

    标签: rabbitmq apache-flink flink-streaming


    【解决方案1】:

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

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

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

    触发保存点并在之后立即关闭作业的机制能否解决您的问题?这将防止在获取保存点后触发检查点。

    【讨论】:

    • 是的,这可以解决我的问题。有没有办法在保存点之后关闭作业?
    • 没有。目前这是不可能的,但将添加以启用作业重新缩放,这是目前正在进行的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2022-12-29
    • 2021-06-16
    • 2020-09-16
    • 1970-01-01
    相关资源
    最近更新 更多