修改Kafka topic的replication-factor
阿新 • • 發佈:2018-11-03
叢集資訊
kafka叢集有三臺broker,id分別為:0,1,2
檢視topic的replication-factor資訊:
[root@ali-37 bin]# ./kafka-topics.sh --zookeeper localhost:2182 --describe --topic connect-configs
Topic:connect-configs PartitionCount:1 ReplicationFactor:1 Configs:cleanup.policy=compact
Topic: connect-configs Partition : 0 Leader: 2 Replicas: 2 Isr: 2
[root@ali-37 bin]#
可以看到ReplicationFactor
為1,並且Leader、Replicas、Isr都在broker id=2的機器上。
編輯修改資訊json檔案
[root@ali-37 kafka_2.11-2.0.0]# cat increase-replication-factor.json
{"version":1,
"partitions":[{"topic":"connect-configs","partition":0,"replicas":[0,1,2]}]
}
[root@ali -37 kafka_2.11-2.0.0]#
由於connect-configs這個topic只有一個partition,檔案中指定了其partition 0的replicas在broker id = 0,1,2這三臺broker上。如果有多個partition,可以在partitions後面放一個數組,針對每一個partition進行修改副本數。
執行修改命令
[[email protected]37 kafka_2.11-2.0.0]# bin/kafka-reassign-partitions.sh --zookeeper localhost:2182 --reassignment-json-file increase-replication-factor.json --execute
Current partition replica assignment
{"version":1,"partitions":[{"topic":"connect-configs","partition":0,"replicas":[2],"log_dirs":["any"]}]}
Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.
[[email protected]37 kafka_2.11-2.0.0]#
看到控制檯輸出成功開始partitions的再分配,但是分配結果如何,需要用下面的命令驗證一下。
驗證修改是否成功
[root@ali-37 kafka_2.11-2.0.0]# bin/kafka-reassign-partitions.sh --zookeeper localhost:2182 --reassignment-json-file increase-replication-factor.json --verify
Status of partition reassignment:
Reassignment of partition connect-configs-0 completed successfully
[root@ali-37 kafka_2.11-2.0.0]#
注意這兒驗證的json檔案和上一步的是同一個檔案,只是換成了--verify
選項。可以看到再分配的狀態是成功的。
再檢視topic資訊
[root@ali-37 kafka_2.11-2.0.0]# bin/kafka-topics.sh --zookeeper localhost:2182 --topic connect-configs --describe
Topic:connect-configs PartitionCount:1 ReplicationFactor:3 Configs:cleanup.policy=compact
Topic: connect-configs Partition: 0 Leader: 2 Replicas: 0,1,2 Isr: 2,0,1
[root@ali-37 kafka_2.11-2.0.0]#
可以看到ReplicationFactor
已經變成了3,Leader在broker id = 2的機器上,副本和同步副本都在broker id = 0,1,2這三臺機器上。整個修改過程完成。
參考Kafka官方網站:http://kafka.apache.org/documentation/#basic_ops_increase_replication_factor