Kafka集群中增加broker非常方便,但是Topic的Partition不会因为集群中broker的增而自动增加。可将分布在整个集群上的Partition重新分配到某些机器上,然后可以停止不需要的broker从而实现节约资源的目的。
每个Partion可以有多个Replica,即AR列表。在这个列表中第一个Replica称为Preferred Replica。创建Topica时需要确保Topic的所有Preferred Replica均匀分布在Kafka集群中。理想场景中一个Partition中的Leader Replica应该是Preferred Replica。这就保证了集群所有的Leader Replica带来的负载在整个集群中是均衡的,如果Broker Shutdown的话,那么Leader Replica带来的负载就不均衡了。
每个Partition只有Leader Replica对外提供读写服务,并且Partition创建时候默认的Leader Replica位于Preferred Replica之上,此时Kafka集群是负载均衡的。Broker Shutdown会导致Leader Replica发生迁移,导致Leader Replica在Kafka集群中不在均衡,因此某些节点的压力会明显大于其他节点。
--generate 生成分区重分配计划
--execute 执行分区重分配计划
--verify 验证分区充重配计划
生成分区重分配计划
--topics-to-move-json-file 指定JSON格式配置文件
{"topics":
[{"topic":"testMcdull"}],
"version": 1
}
topic 重分配topic名称
--broker-list partition重分配broker范围
kafka-reassign-partitions.bat --zookeeper localhost:2182 --topics-to-move-json-file allTopics.json --broker-list "2,3" --generate
执行分区重分配计划
--reassignment-json-file 指定JSON格式配置文件,第一步生成的重分配计划
kafka-reassign-partitions.bat --zookeeper localhost:2182 --reassignment-json-file topic-reassignment.json --execute
验证分区重分配计划
查看重分配进度
--reassignment-json-file 指定JSON格式配置文件,第一步生成的重分配计划
kafka-reassign-partitions.bat--zookeeper localhost:2182 --reassignment-json-file topic-reassignment.json --verify