自定义分区分配和迁移
分区重新分配工具还可用于选择性地将分区的副本移动到特定的代理集。当以这种方式使用时,假设用户知道重新分配计划并且不需要工具生成候选重新分配,有效地跳过 - 生成步骤并直接移动到--execute步骤
例如,以下示例将主题foo1的分区0移动到代理5,6,将主题foo2的分区1移动到代理2,3:
第一步是在json文件中手工制作自定义重新分配计划:
1 2 |
> cat custom-reassignment.json { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :0, "replicas" :[5,6]},{ "topic" : "foo2" , "partition" :1, "replicas" :[2,3]}]} |
然后,使用带有--execute选项的json文件来启动重新分配过程:
1 2 3 4 五 6 7 8 9 10 11 12 13 14 |
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file custom-reassignment.json --execute Current partition replica assignment { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :0, "replicas" :[1,2]}, { "topic" : "foo2" , "partition" :1, "replicas" :[3,4]}] } Save this to use as the --reassignment-json- file option during rollback Successfully started reassignment of partitions { "version" :1, "partitions" :[{ "topic" : "foo1" , "partition" :0, "replicas" :[5,6]}, { "topic" : "foo2" , "partition" :1, "replicas" :[2,3]}] } |
--verify选项可与该工具一起使用,以检查分区重新分配的状态。请注意,相同的expand-cluster-reassignment.json(与--execute选项一起使用)应与--verify选项一起使用:
1 2 3 4 |
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file custom-reassignment.json --verify Status of partition reassignment: Reassignment of partition [foo1,0] completed successfully Reassignment of partition [foo2,1] completed successfully |
增加复制因子
增加现有分区的复制因子很容易。只需在自定义重新分配json文件中指定额外副本,并将其与--execute选项一起使用,以增加指定分区的复制因子。
例如,以下示例将主题foo的分区0的复制因子从1增加到3.在增加复制因子之前,分区的唯一副本存在于代理5上。作为增加复制因子的一部分,我们将添加更多副本经纪人6和7。
第一步是在json文件中手工制作自定义重新分配计划:
1 2 3 |
> cat increase-replication-factor.json { "version" :1, "partitions" :[{ "topic" : "foo" , "partition" :0, "replicas" :[5,6,7]}]} |
然后,使用带有--execute选项的json文件来启动重新分配过程:
1 2 3 4 五 6 7 8 9 10 |
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file increase-replication-factor.json --execute Current partition replica assignment { "version" :1, "partitions" :[{ "topic" : "foo" , "partition" :0, "replicas" :[5]}]} Save this to use as the --reassignment-json- file option during rollback Successfully started reassignment of partitions { "version" :1, "partitions" :[{ "topic" : "foo" , "partition" :0, "replicas" :[5,6,7]}]} |
--verify选项可与该工具一起使用,以检查分区重新分配的状态。请注意,相同的increase-replication-factor.json(与--execute选项一起使用)应与--verify选项一起使用:
1 2 3 |
> bin /kafka-reassign-partitions .sh --zookeeper localhost:2181 --reassignment-json- file increase-replication-factor.json --verify Status of partition reassignment: Reassignment of partition [foo,0] completed successfully |
您还可以使用kafka-topics工具验证复制因子的增加:
1 2 3 |
> bin /kafka-topics .sh --zookeeper localhost:2181 --topic foo --describe Topic:foo PartitionCount:1 ReplicationFactor:3 Configs: Topic: foo Partition: 0 Leader: 5 Replicas: 5,6,7 Isr: 5,6,7 |