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集群中不在均衡,因此某些节点的压力会明显大于其他节点。

kafka之重新分配分区副本kafka-reassign-partitions命令

--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

kafka之重新分配分区副本kafka-reassign-partitions命令

 

执行分区重分配计划

--reassignment-json-file 指定JSON格式配置文件,第一步生成的重分配计划

kafka-reassign-partitions.bat --zookeeper localhost:2182  --reassignment-json-file topic-reassignment.json --execute

kafka之重新分配分区副本kafka-reassign-partitions命令

验证分区重分配计划

查看重分配进度

--reassignment-json-file 指定JSON格式配置文件,第一步生成的重分配计划

kafka-reassign-partitions.bat--zookeeper localhost:2182 --reassignment-json-file topic-reassignment.json --verify

kafka之重新分配分区副本kafka-reassign-partitions命令

相关文章:

  • 2021-12-19
  • 2021-08-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-19
  • 2021-06-03
  • 2021-04-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2020-03-11
  • 2021-10-21
  • 2021-11-02
  • 2022-12-23
相关资源
相似解决方案