如果我们有一个kafka主题并且它有5个分区,我们可以将分区数增加到30.同样在增加分区数量之后,我们按照代理ID的顺序更改每个分区的领导者并重新平衡该特定主题的集群。我们怎么能这样做?
答案 0 :(得分:1)
我发现它是如何工作的。
1)首先找到现有主题的信息
2)使用其ID
找出群集中的所有代理3)分区数量
4)运行群集重新分配脚本以重新平衡
给出实际的zookeeper url或我使用localhost的ips。
1)在bin目录中我们有kafka-topics.sh ./kafka-topics.sh --zookeeper localhost:2181 - topic dummytopic --describe
向您展示了分区领导者所在的主题以及副本的存在
2)./ zookeeper-shell.sh localhost:2181 做ls / brokers / ids
列出了所有经纪人ID
3)./ kafka-topics.sh --alter --zookeeper localhost:2181 - topic dummytopic --partitions 30
增加分区数
4) 在运行此命令之前,您需要一个json文件,该文件允许您更改特定主题的分区负责人
为此我开发了一个简单的工具,为非常大的分区计数生成json
https://github.com/chandradeepak/kafka-reassignment-gen
go build&& topic = dummytopic num_partitions = 30 brokerid_start = 1022 replica_count = 3 ./kafka-reassignment-gen
这将生成一个json,我们可以将它用于expand-cluster-reassignment.json。看起来像这样的事情
{"版本":1,"隔板":[{"主题":" dummytopic""隔板&# 34;:0,"复制品":[1001,1002,1003]},{"主题":" dummytopic""隔板" :1,"复制品":[1002,1003,1004]},{"主题":" dummytopic""隔板":2 "复制品":[1003,1004,1005]},{"主题":" dummytopic""隔板":3,& #34;复制品":[1004,1005,1006]},{"主题":" dummytopic""隔板&#34:4,&#34 ;复制品":[1005,1006,1007]},{"主题":" dummytopic""隔板":5,"副本& #34;:[1006,1007,1008]},{"主题":" dummytopic""隔板":6,"复制品&#34 ;:[1007,1008,1009]},{"主题":" dummytopic""隔板":7,"复制品&#34 ;: [1008,1009,1010]},{"主题":" dummytopic""隔板":8,"复制品":[1009 ,1010,1011]},{"主题":" dummytopic""隔板":9,"复制品":[1 010,1011,1012]},{"主题":" dummytopic""隔板":10,"复制品":[1011 1012,1013]},{"主题":" dummytopic""隔板":11,"复制品":[1012,1013, 1014]},{"主题":" dummytopic""隔板":12,"复制品":[1013,1014,1015] },{"主题":" dummytopic""隔板":13,"复制品":[1014,1015,1016]}, {"主题":" dummytopic""隔板":14,"复制品":[1015,1016,1017]},{& #34;主题":" dummytopic""隔板":15,"复制品":[1016,1017,1018]},{&#34 ;主题":" dummytopic""隔板":16,"复制品":[1017,1018,1019]},{"主题& #34;:" dummytopic""隔板":17,"复制品":[1018,1019,1020]},{"主题&#34 ;:" dummytopic""隔板":18,"复制品":[1019,1020,1021]},{"主题&#34 ;: " dummytopic""隔板":19,"复制品":[1020,1021,1022]},{&#3 4;主题":" dummytopic""隔板":20,"复制品":[1021,1022,1023]},{"主题":" dummytopic""隔板":21,"复制品":[1022,1023,1024]},{"主题&# 34;:" dummytopic""隔板":22,"复制品":[1023,1024,1025]},{"主题" :" dummytopic""隔板":23,"复制品":[1024,1025,1026]},{"主题":& #34; dummytopic""隔板":24,"复制品":[1025,1026,1027]},{"主题":&#34 ; dummytopic""隔板":25,"复制品":[1026,1027,1028]},{"主题":" dummytopic& #34;"隔板":26,"复制品":[1027,1028,1029]},{"主题":" dummytopic&#34 ;,"隔板":27,"复制品":[1028,1029,1030]},{"主题":" dummytopic&#34 ;, "隔板":28,"复制品":[1029,1030,1001]},{"主题":" dummytopic"&# 34;隔板":29,"复制品":[1030,1001,1002]}]}
./ kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --execute
这将执行群集重新分配,并将分区领导者更改为您期望的内容。