在执行纱线应用程序终止并再次运行之后,flink将从上一个偏移量恢复吗?

我使用FlinkKafkaConsumer来使用kafka并启用检查点。现在,我对偏移量管理和检查点机制有些困惑。 我已经知道flink将开始从消费者组的分区中读取分区。 https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html#kafka-consumers-start-position-configuration 偏移量将存储到远程fileSystem中的检查点中。 https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html#kafka-consumers-and-fault-tolerance

如果我通过执行yarn application -kill appid来停止应用程序会发生什么 并运行./bin flink run ...之类的启动命令? flink将获得检查点或kafka管理的group-id的偏移量吗?

ooohwj 回答:在执行纱线应用程序终止并再次运行之后,flink将从上一个偏移量恢复吗?

如果在没有定义保存点($ bin/flink run -s :savepointPath [:runArgs])的情况下再次运行该作业,则flink将尝试从kafka(在较早的版本中从zookeeper)获取消费者组的偏移量。但是,您将丢失flink作业的所有其他状态(如果您有无状态flink作业,这可能是可忽略的)。

我必须承认这种行为非常令人困惑。默认情况下,启动没有保存点的作业就像从零开始。据我所知,只有kafka源代码的实现不同于该行为。如果您想更改该行为,可以将setStartFromGroupOffsets中的FlinkKafkaConsumer[08/09/10]设置为false。此处描述:Kafka Consumers Start Position Configuration

也许值得仔细看看flink的文档:What is a savepoint and how does it differ from checkpoints

简而言之

检查点:

  

Checkpoints的主要目的是在意外作业失败的情况下提供一种恢复机制。 Checkpoint的生命周期由Flink管理

保存点:

  

保存点由用户创建,拥有和删除。他们的用例用于计划的手动备份和恢复

当前正在进行有关如何“统一”保存点和检查点的讨论。在此处找到很多技术细节:Flink improvals 47: Checkpoints vs Savepoints

本文链接:https://www.f2er.com/3166736.html

大家都在问