3

總之,我想重新運行一個Flink管道上的數據卡夫卡開始。Flink + Kafka重置檢查點和偏移量

Flink 0.10.2,Kafka 0.8.2。

我在Kafka有一個tweets主題,保留時間爲2小時,Flink的一個管道用10分鐘5分鐘的滑動窗口計算tweets。

如果我中斷管道並重新運行它,我希望它重新讀取舊的tweets,從而發出5分鐘的推文值。 相反,它似乎從新到的推文重新啓動,所以它需要5分鐘纔算「處於政權」。

我試過auto.offset.reset = smallest/earliest和更改group.id,但未成功。我也嘗試在這裏描述的手動更改Kafka中的偏移量:https://metabroadcast.com/blog/resetting-kafka-offsets

然後我假設問題可能與Flink的檢查點相關,但我沒有線索/無法找到有關如何重置該問題的信息。

任何人都可以分享一些工作代碼?謝謝,E.

+0

我想你需要使用保存點。這些將在即將發佈的1.0版本中提供(或者您可能想要查看當前的大師):https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/savepoints.html –

+0

這樣會更好,但我也可以從頭開始重讀卡夫卡的所有內容,並重新計算最後一個窗口的內容。 – ecesena

回答

2

要重新讀取卡夫卡主題中的所有可用內容,將「group.id」和「auto.offset.reset」設置爲「最早」應該足夠了。

如果這不起作用,就會出現問題。

+0

這就是我的想法,但Flink似乎更復雜,因爲它管理着一個內部狀態,並將「將該副本推送給動物園管理員」。 – ecesena

+0

Flink做了以下事情:它確實保持內部最後一次讀取偏移的內部狀態。如果Flink作業由於某種原因失敗,它將從該狀態恢復。 這允許用戶以完全一次的語義執行下游操作。 Flink使用分佈式快照機制來定期備份狀態。一旦所有運營商確認了分佈式快照,Kafka源也將「偏移」提交到ZK。 這樣,用戶就可以從ZK的偏移量重新開始工作。請注意,ZK的機制並沒有給出完全一次的保證。 –

+0

感謝您的詳細信息 - 您是否知道是否有辦法覆蓋Flink的狀態? (或者類似於使用ZK偏移的強制?) – ecesena