1. 程式人生 > >kafka叢集擴容後的topic分割槽遷移

kafka叢集擴容後的topic分割槽遷移

kafka叢集擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的;它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面;
所以需要將一些topic的分割槽遷移到新的broker上。

kafka-reassign-partitions.sh是kafka提供的用來重新分配partition和replica到broker上的工具
簡單實現重新分配需要三步:

  • 生成分配計劃(generate)
  • 執行分配(execute)
  • 檢查分配的狀態(verify)

具體操作如下:

1. 生成分配計劃

編寫分配指令碼:
vi topics-to-move.json

內容如下:

{"topics":
    [{"topic":"event_request"}],
    "version": 1
}

執行分配計劃生成指令碼:

kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate

執行結果如下:

[[email protected] topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate
Current partition replica assignment  #當前分割槽的副本分配

{"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[3,4]},{"topic":"event_request","partition":1,"replicas":[4,5]}]}
Proposed partition reassignment configuration #建議的分割槽配置

{"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[6,5]},{"topic":"event_request","partition":1,"replicas":[7,6]}]}

Proposed partition reassignment configuration 後是根據命令列的指定的brokerlist生成的分割槽分配計劃json格式。將 Proposed partition reassignment configuration的配置copy儲存到一個檔案中 topic-reassignment.json
vi topic-reassignment.json

{"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[6,5]},{"topic":"event_request","partition":1,"replicas":[7,6]}]}

2. 執行分配(execute)

根據step1 生成的分配計劃配置json檔案topic-reassignment.json,進行topic的重新分配。

kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --execute

執行前的分割槽分佈:

[[email protected] topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
Topic:event_request PartitionCount:2    ReplicationFactor:2 Configs:
    Topic: event_request    Partition: 0    Leader: 3   Replicas: 3,4   Isr: 3,4
    Topic: event_request    Partition: 1    Leader: 4   Replicas: 4,5   Isr: 4,5

執行後的分割槽分佈:

[[email protected] topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
Topic:event_request PartitionCount:2    ReplicationFactor:4 Configs:
    Topic: event_request    Partition: 0    Leader: 3   Replicas: 6,5,3,4   Isr: 3,4
    Topic: event_request    Partition: 1    Leader: 4   Replicas: 7,6,4,5   Isr: 4,5

3. 檢查分配的狀態

檢視分配的狀態:正在進行

[[email protected] topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --verify
Status of partition reassignment:
Reassignment of partition [event_request,0] is still in progress
Reassignment of partition [event_request,1] is still in progress
[[email protected] topic_reassgin]$ 

檢視“is still in progress” 狀態時的分割槽,副本分佈狀態:

發現Replicas有4個哦,說明在重新分配的過程中新舊的副本都在進行工作。

[[email protected] topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
Topic:event_request PartitionCount:2    ReplicationFactor:4 Configs:
    Topic: event_request    Partition: 0    Leader: 3   Replicas: 6,5,3,4   Isr: 3,4
    Topic: event_request    Partition: 1    Leader: 4   Replicas: 7,6,4,5   Isr: 4,5

檢視分配的狀態:分配完成。

[[email protected] topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --verify
Status of partition reassignment:
Reassignment of partition [event_request,0] completed successfully
Reassignment of partition [event_request,1] completed successfully

檢視“completed successfully”狀態的分割槽,副本狀態:

已經按照生成的分配計劃正確的完成了分割槽的重新分配。

[[email protected] topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
Topic:event_request PartitionCount:2    ReplicationFactor:2 Configs:
    Topic: event_request    Partition: 0    Leader: 6   Replicas: 6,5   Isr: 6,5
    Topic: event_request    Partition: 1    Leader: 7   Replicas: 7,6   Isr: 6,7

相關推薦

kafka叢集擴容topic分割槽遷移

kafka叢集擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的;它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面; 所以需要將一些topic的分割槽遷移到新的broker上。 kafka-reassign-partitions.s

kafka叢集擴容(Topic遷移)

文章新地址 文章開始前推薦使用 kafka-manager 工具,可以實時檢視kafka同步狀態,broker實時讀寫流量,topic分割槽情況等資訊,提供重選最優leader等操作。 kafka的叢集擴容實際上就是把 topic 的 partiti

kafka集群擴容topic分區遷移

eve event haskell zook ado quest top alter 結果 kafka集群擴容後的topic分區遷移 ./bin/kafka-topics.sh --zookeeper node3:2181,node4:2181,node5:2181 -

Kafka叢集中 topic資料的分割槽 遷移到其他broker

前言 kafka叢集擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的;它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面;所以需要將一些topic的分割槽遷移到新的broker上。另外一種情況就是叢集減少broker節點,對原有的topi

Kafka動態調整topic分割槽partition

我們在使用kafka時,初期建立時所指定topic屬性需要修改,如何動態修改kafka屬性?kafka提供了命令列工具—kafka-topics.sh. kafka-topics.sh工具介紹 kafka-topics.sh工具也是我們用來建立topic、檢視top

kafka消費者連線topic分割槽失敗造成訊息大量堆積

晚上7點收到topic堆積告警,經檢查,發現消費者到topic分割槽斷連,分割槽覆蓋率下降為0,由於業務TPS高,所以幾分鐘內即形成上千萬條訊息堆積,業務成功率下降明顯,第一時間懷疑晚上高峰期業務量大,頻寬消耗大,網路不穩定造成的,所以第一時間增加消費方的超時時間(socke

kafka如何擴容伺服器、重新分割槽Partition

1. 擴容 在新的物理機上安裝kafka程式,修改config/server.properties檔案裡的broker.id必須在叢集中唯一,修改其他必要的配置項,其中zookeeper.connect配置項,寫上kafka叢集現在使用的zookeeper叢集

Kafka Topic動態遷移 (原始碼解析)

總結下自己在嘗試Kafka分割槽遷移過程中對這部分知識的理解,請路過高手指正。 本文主要側重自己對相關Kafka原始碼的理解: generateAssignment()函式 (對應上述連結原文中的  --generate 引數)產生新的遷移計劃,輸出格式為Json字串

記一次 Kafka 叢集線上擴容

前段時間收到某個 Kafka 叢集的生產客戶端反饋傳送訊息耗時很高,於是花了一段時間去排查這個問題,最後該叢集進行擴容,由於某些主題的當前資料量實在太大,在對這些主題遷移過程中話費了很長一段時間,不過這個過程還算順利,因為在遷移過程中也做足了各方面的調研,包括分割槽重平衡過程中對客戶端的影響,以及對整個叢集的

LVM邏輯卷-創建、擴容、縮減、遷移、快照

網絡 linux LVM邏輯卷邏輯卷管理工具,允許在多個物理設備之間重新組織文件系統,包括重新設定文件系統的大小PE 物理盤區,類似於磁盤中的block邏輯卷的基本存儲單位就是PEdm:device mapper將一個或多個底層塊設備組織成一個邏輯設備的模塊設備名:/dev/dm-# //系統自動

redis cluster 集群暢談(三) 之 水平擴容、slave自動化遷移

fig star init.d 物理 成功 其它 -i .html enabled    上一篇 http://www.cnblogs.com/qinyujie/p/9029522.html, 主要講解 實驗多master寫入、讀寫分離、實驗自動故障切換(高可用性

Kafka叢集內複製功能深入剖析

Kafka是一個分散式釋出訂閱訊息系統。由LinkedIn開發並已經在2011年7月成為apache頂級專案。kafka在LinkedIn, Twitte等許多公司都得到廣泛使用,主要用於:日誌聚合,訊息佇列,實時監控等。 0.8版本開始,kafka支援叢集內複製,從而提高可用性和系統穩定性,這篇文章主要概

端介面遷移(從 webapi 到 openapi)前端經驗總結

此文已由作者張磊授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 前情提要 以前用的是 webapi 現在統一切成 openapi,欄位結構統統都變了 接入介面 20+,涉及模組的建立等主要流程。 頁面基本無改,僅有一個新需求,建立時新增一個欄位 其他依賴介面需要接入模組

Kafka叢集配置---Windows版

Kafka叢集配置---Windows版   Kafka是一種高吞吐量的分散式釋出訂閱的訊息佇列系統,Kafka對訊息進行儲存時是通過tipic進行分組的。今天我們僅實現Kafka叢集的配置。 前言 最近研究kafka,發現網上很多關於kafka的介紹都是基於Linux作業

centos7中kafka叢集環境搭建部署

一、前期準備 1、下載kafka安裝包 官方下載地址:http://kafka.apache.org/downloads.html kafka_2.11-2.0.0.tgz   2、準備好要安裝的叢集環境的目標機器(3檯安裝centos7系統) 3、將下載好的壓縮包

大資料學習之路94-kafka叢集安裝

解壓 Kafka 安裝包 修改配置檔案 config/server.properties vi server.properties broker.id=0 //為依次增長的:0、1、2、3、4,叢集中唯一id log.dirs=/kafkaData/logs // Kafka

kafka叢集安裝步驟

準備工作: 安裝好zookeeper叢集 一、上傳並解壓 1. cd /usr/kafka (沒有目錄的話自己建立) 2. rz 3. tar -zxvf kafka_2.12-1.1.0.tgz 二、2.修改配置檔案 /usr/kafka/kafka_2.12-1.

hadoop叢集啟動,發現所有程序都在,唯獨沒有master節點的namenode程序

這個時候,去logs/目錄下檢視日誌 cat hadoop-had_user-namenode-master.log 得到結果: java.io.IOException: There appears to be a gap in the edit log.  We expect

kafka消費者群組與分割槽再均衡

group.id指定了消費者所屬的消費群組,預設是必須指定的。 同一個群組裡的消費者訂閱的同一個主題,每個消費者接收主題的一部分分割槽的訊息。 如果群組裡的消費者數量超過主題的分割槽數量,就會有一部分消費者被閒置,不會接收到任何訊息。 同一個主題可以被多個消費者群組消費,消費者群組之間互

擴容虛擬機器分割槽大小

此方案只適用採用LVM卷組的分割槽形式,如何分辨呢,請看如下截圖 普通分割槽模式,sda1、2、3這樣形式 LVM形式如下,有/dev/mapper/XXX這種形式 下面是主要操作步驟: 一. 在虛擬機器上增加磁碟空間 如下圖。首先在vmvare管理客戶端上調整磁碟大小 二、調