簡體   English   中英

將 Kafka Topic 遷移到新集群(以及對 Druid 的影響)

[英]Migrate Kafka Topic to new Cluster (and impact on Druid)

我正在從 Kafka 的主題中將數據提取到 Druid 中。 現在我想將我的 Kafka Topic 遷移到新的 Kafka 集群。 在不重復數據和不停機的情況下,有哪些可能的方法可以做到這一點?
我考慮了以下將主題遷移到新的 Kafka 集群的可能方法。

  1. 手動遷移:
    • 在新的 Kafka 集群中創建一個具有相同配置的主題。
    • 停止向 Kafka 集群推送數據。
    • 開始在新集群中推送數據。
    • 停止從舊集群消費。
    • 從新集群開始消費。
  2. 在兩個 Kafka 集群中生成數據:
    • 在新的 Kafka 集群中創建一個具有相同配置的主題。
    • 開始在兩個 Kafka 集群中生成消息。
    • 在 Druid 中更改 Kafka 主題配置。
    • 重置 Druid 中的 Kafka 主題偏移量。
    • 從新集群開始消費。
    • 遷移成功后,停止在舊的 Kafka 集群中生產。
  3. 使用鏡像制造商 2:
    • MM2 在新集群中創建 Kafka 的主題。
    • 開始在兩個集群中復制數據。
    • 將生產者和消費者移動到新的 Kafka 集群。
    • 這種方法的問題:
      1. Druid 在其元數據中管理 Kafka 主題的偏移量。
      2. MM2 將在新集群中創建兩個具有相同名稱(帶前綴)的主題。
      3. 德魯伊是否支持正則表達式的主題名稱?

注意:Druid 在其元數據中管理 Kafka 主題偏移量。
德魯伊版本:0.22.1
舊 Kafka 集群版本:2.0

也許對您的數字 1 稍作修改:

  1. 開始發布到新集群。
  2. 等待當前主管趕上舊主題中的所有數據。
  3. 暫停主管。 這將強制所有任務編寫和發布段。 等待此主管的所有任務成功。 這是“停機時間”開始的地方。 當我們切換到新集群時,所有當前攝取的數據仍然是可查詢的。 新數據正在新集群中積累,但未在 Druid 中攝取。
  4. 當前數據源的所有偏移信息都存儲在元數據存儲中。 使用刪除這些記錄

delete from druid_dataSource where datasource={name}

  1. 終止當前主管。

  2. 提交帶有新主題和新服務器信息的新規范。

您可以按照以下步驟操作:

1- 在您的新集群上,創建您的新主題(相同名稱或新名稱,無所謂)

2-更改您的應用程序配置以將消息發送到新的kafka集群

3-等到德魯伊消耗掉舊卡夫卡的所有消息,您可以通過檢查主管的滯后和偏移信息來確保數據何時被消耗

4- 暫停任務,等待任務發布他們的段並成功退出

5- 編輯德魯伊的數據源,確保 useEarliestOffset 設置為 true,更改信息以從新的 kafka 集群中使用(如果不相同,則更改新的主題名稱)

6- 保存模式並恢復任務。 Druid 在檢查偏移量時會撞牆,因為它在新的 kafka 中找不到它們,然后從頭開始

選項 1 和 2 將有停機時間,您將丟失現有主題中的所有數據。

選項 2 不能保證您在嘗試將消息一起發送到多個集群時不會丟失數據或生成重復數據。

如果不至少嘗試 MM2,將無法將 Druid/Kafka 偏移數據遷移到新集群。 你說你可以在選項 2 中重置偏移量,那么為什么不對選項 3 做同樣的事情呢? 我沒有使用過 Druid,但它應該能夠支持從多個主題消費,無論是否有模式。 使用選項 3,您無需修改任何生產者代碼,直到您對遷移過程感到滿意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM