kafka 擴容 與 partitions 增加


https://www.99ya.net/archives/517

kafka 擴容 與 partitions 增加

kafka 擴容

* kafka的擴容難點:
1)主要在於增加機器之后,數據需要rebalance到新增的空閑節點,即把partitions遷移到空閑機器上。kafka提供了bin/kafka-reassign-partitions.sh工具,完成parttition的遷移。
2)kafka的集群的數據量加大,數據rebalance的時間較長。解決辦法是把log.retention.hours=1設置一小時(生產參數24小時)。修改參數之后,重啟kakfa節點,kafka會主動purge 1小時之前的log數據。

* 擴容過程
1. 驗證kafka節點是否正常加入集群。

zkCli.sh > ls /kafka/brokers/ids/

2. purge數據,使數據遷移更加快速
1) 替換retent.time,只保留最近一個小時的數據。主要是為了方面topic數據快速遷移。

sed -i 's/log.retention.hours=24/log.retention.hours=1/g' /apps/conf/kafka/server.properties

2)關閉kafka

jps -ml |grep 'kafka.Kafka' | awk '{print $1}' |xargs kill -9

3)驗證kafka進程

jps -ml |grep 'kafka.Kafka' | awk '{print $1}'

4)啟動

kafka-server-start.sh -daemon server.properties jps -ml |grep 'kafka.Kafka' | awk '{print $1}'

3. 增加partitions
因為增加節點,物理機器機器更多,需要增加partition的個數。

bin/kafka-topics.sh --zookeeper 10.1.11.6:2181 --alter --topic all --partitions 24

4. 重新分配parttion(reassign partitions)
1)獲取所有的topic

kafka-topics.sh --list --zookeeper 10.1.11.6:2181

2) reassign partitions**
生成需要遷移的topic partitions信息,broker-list為所有的節點,包括新增節點。

./bin/kafka-reassign-partitions.sh --broker-list "1,2,3" --topics-to-move-json-file move.json --zookeeper 10.1.11.6:2181 --generate

其中topics的json文件內容為:

{"topics": [{"topic": "logstash-product"}], "version":1 }

3)使用上一步生成的建議partition json內容進行完成遷移
“Proposed partition reassignment configuration”后面的內容保存到reassign.json文件中

bin/kafka-reassign-partitions.sh --broker-list "1,2,3" --reassignment-json-file reassign.json --zookeeper 10.1.11.6:2181 --execute

4)修改參數,重啟kafka

sed -i 's/log.retention.hours=1/log.retention.hours=24/g' /apps/conf/kafka/server.properties

至此 kafka 擴容完畢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM