2017-08-03 37 views
0

我很困惑如何使用文件通道時的Flume數據可恢復,而內存通道不可用。Flume內存通道何時無法恢復,爲什麼?

我試過一個卡夫卡水槽,當我在讀水時把水槽放下,卡夫卡正確讀取通道中的數據(文件)。當Flume重新啓動時,流水線以可靠的方式繼續提供數據。那麼內存通道如何不可恢復?在這種情況下,我需要恢復通道中的數據?特別是如果Flume開始從保存的偏移量讀取文件。

回答

0

您可以重新啓動Kafka以檢查消息是否丟失。

抵消概念: 這取決於水槽事務處理。在flume重啓過程中,某些事務可能會被提交,但由於連接丟失,處理可能會失敗。 對於例如:您有一個事務,需要一些處理之後,您將其存儲在數據庫中。即使flume匯引發任何異常,你也有transaction.commit()。所以,當你的處理邏輯拋出異常時,你會在重啓過程中丟失數據。交易承諾並且抵消額增加。

因此,在重啓過程之前進行偏移比較安全。您應該按照

  1. 採取出口抵消
  2. 停止水槽
  3. 導入偏移
  4. 開始水槽