【问题标题】:Flink+Kafka reset checkpoint and offsetFlink+Kafka 重置检查点和偏移量
【发布时间】:2016-06-01 17:42:09
【问题描述】:

简而言之,我想从头开始对 Kafka 中的数据重新运行 Flink 管道。

Flink 0.10.2、Kafka 0.8.2。

我在 Kafka 中有一个保留 2 小时的推文主题,在 Flink 中有一个管道,它以每 10 秒 5 分钟的滑动窗口计数推文。

如果我中断管道并重新运行它,我希望它重新读取较旧的推文,从而发出 5 分钟的推文计数。 相反,它似乎从新到达的推文重新开始,因此需要 5 分钟才能计数“在政权”。

我尝试了auto.offset.reset = smallest/earliest 和更改group.id,但均未成功。我还尝试按照此处所述手动更改 Kafka 中的偏移量:https://metabroadcast.com/blog/resetting-kafka-offsets

然后我假设该问题可能与 Flink 的检查点有关,但我不知道/找不到有关如何重置它的信息。

谁能分享一些工作代码?谢谢,E。

【问题讨论】:

标签: apache-kafka kafka-consumer-api apache-flink flink-streaming


【解决方案1】:

要重新阅读 Kafka 主题中可用的所有内容,设置一个新的“group.id”并将“auto.offset.reset”设置为“earliest”就足够了。

如果这不起作用,那就有问题了。

【讨论】:

  • 我是这么想的,但 Flink 似乎更复杂,因为它管理内部状态并将其“推送副本”给 zookeeper。
  • Flink 所做的如下:它确实在内部保留了最后一次读取偏移的内部状态。如果 Flink 作业由于某种原因失败,它会从该状态恢复。这允许用户使用完全一次语义执行下游操作。 Flink 使用分布式快照机制,定期备份状态。一旦所有操作员都确认了分布式快照,Kafka 源也会将偏移量“提交”到 ZK 中。这样,用户可以从 ZK 中的偏移量重新启动作业。请注意,ZK 的机制并没有提供完全一次的保证。
  • 感谢您提供详细信息-您知道是否有办法覆盖 Flink 的状态吗? (或者类似于强制使用 ZK 偏移量?)
  • 作业停止或取消时丢弃状态。无法更改状态中的值或手动删除它。但是你可以取消并开始工作,它会从 ZK 获得偏移量(只要 group.id 相同并且偏移量在 kafka 中仍然可用)
猜你喜欢
  • 2021-09-03
  • 2016-05-26
  • 2017-06-24
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2018-01-22
相关资源
最近更新 更多