我已經設置了一個具有2個JobManager和3個TaskManager的Flink1.2獨立羣集,我使用JMeter通過生成Kafka消息/事件來加載測試它,然後處理它。處理作業在TaskManager上運行,通常需要約15K事件/秒。
該作業設置了EXACTLY_ONCE檢查點,並將狀態和檢查點保存到Amazon S3。 如果我關閉運行作業的TaskManager,則需要幾秒鐘,然後在不同的TaskManager上繼續作業。作業主要記錄連續整數的事件id(例如從0到1200000)。
當我檢查TaskManager上的輸出時,我關閉了最後一個計數,例如500000,然後當我在不同的TaskManager上檢查恢復的作業上的輸出時,它以〜400000開始。這意味着~100K的重複事件。這個數字取決於測試的速度可以更高或更低。
不知道我是否遺漏了一些東西,但我希望作業在不同的TaskManager上恢復後顯示下一個連續的數字(如500001)。
有誰知道這是爲什麼發生/額外的設置,我必須配置獲得一次?靈活處理一次消息處理
1
A
回答
7
您正好看到預期的行爲。 Flink在出現故障時通過檢查點和重放的組合實現容錯功能。保證並不是每個事件只會被髮送到管道中一次,而是每個事件只會影響管道的狀態一次。
點校驗在整個羣集中創建一致的快照。在恢復期間,操作員狀態將恢復,並且來源將從最近的檢查點重播。
有關更詳盡的說明,請參閱該數據工匠博客文章:High-throughput, low-latency, and exactly-once stream processing with Apache Flink™,或the Flink docs。
相關問題
- 1. 處理消息
- 2. 處理消息
- 3. 錯誤處理靈活性
- 4. 處理控制靈活性
- 5. 處理Windows消息
- 6. Firemonkey - 消息處理
- 7. JSP處理消息
- 8. GWT:處理消息?
- 9. Embedded Jetty處理每條消息兩次
- 10. 多次處理WCF MSMQ消息
- 11. Mule:間隔處理消息。延遲消息處理
- 12. 使用xml-conduit靈活處理屬性
- 13. 靈活處理函數參數在Python
- 14. 異步處理消息框
- 15. 處理有害消息
- 16. JBoss不處理JMS消息
- 17. NServiceBus稍後處理消息
- 18. MSMQ中毒消息處理
- 19. 如何處理EXCEPT消息?
- 20. 消息處理程序
- 21. HandlerThread如何處理消息?
- 22. NServiceBus延遲消息處理
- 23. MessageDrivenBean不處理消息[Wildfly]
- 24. Erlang消息處理事務
- 25. 暫停MDB消息處理
- 26. 同時處理rabbitmq消息
- 27. 處理RSelenium錯誤消息
- 28. Android Handler不處理消息
- 29. 處理錯誤消息
- 30. 用碘處理AVL消息