標籤:apache kafka遷移與擴容 kafka遷移與擴容 kafka擴容 kafka新增分區 kafka遷移topic
kafka遷移與擴容工具使用
參考官網site:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-6.ReassignPartitionsTool
說明:
當我們對kafka叢集擴容時,需要滿足2點要求:
- 將指定topic遷移到叢集內新增的node上。
- 將topic的指定partition遷移到新增的node上。
1. 遷移topic到新增的node上假如現在一個kafka叢集運行三個broker,broker.id依次為101,102,103,後來由於業務資料突然暴增,需要新增三個broker,broker.id依次為104,105,106.目的是要把push-token-topic遷移到新增node上。指令碼(json格式)如下所示:[email protected]:$ ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183/config/mobile/mq/mafka
--topics-to-move-json-file migration-push-token-topic.json --broker-list"104,105,106" --execute
指令碼migration-push-token-topic.json檔案內容如下:
{
"topics":
[
{
"topic": "push-token-topic"
}
],
"version":1
}
2.topic修改(replicats-factor)副本個數
lizh[email protected]:$ ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183/config/mobile/mq/mafka
--reassignment-json-file replicas-update-push-token-topic.json --execute
假如初始時push-token-topic為一個副本,為了提高可用性,需要改為2副本模式。
指令碼replicas-push-token-topic.json檔案內容如下:
{
"partitions":
[
{
"topic": "log.mobile_nginx",
"partition": 0,
"replicas": [101,102,104]
},
{
"topic": "log.mobile_nginx",
"partition": 1,
"replicas": [102,103,106]
},
{
"topic": "xxxx",
"partition": 數字,
"replicas": [數組]
}
],
"version":1
}
3.topic的分區擴容用法
a.先擴容分區數量,指令碼如下:
例如:push-token-topic初始分區數量為12,目前到增加到15個
[email protected]:$ ./bin/kafka-topics.sh --zookeeper 192.168.2.225:2183/config/mobile/mq/mafka --alter --partitions 15 --topic push-token-topic
b.設定topic分區副本
[email protected]:$ ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183/config/mobile/mq/mafka
--reassignment-json-file partitions-extension-push-token-topic.json --execute
指令碼partitions-extension-push-token-topic.json檔案內容如下:
{ "partitions": [ { "topic": "push-token-topic", "partition": 12, "replicas": [101,102] }, { "topic": "push-token-topic", "partition": 13, "replicas": [103,104] }, { "topic": "push-token-topic", "partition": 14, "replicas": [105,106] } ], "version":1}