内容简介:Kafka提供了一个工具,用于调整Topic中各个分区的复本数据。工具名称叫 kafka-reassign-partitions.sh 。创建一个Topic,共2个分区,副本数为2(共2份,含原始数据):查看该Topic。分区0的Leader是1,分区1的Leader是2:
说明
Kafka提供了一个工具,用于调整Topic中各个分区的复本数据。工具名称叫 kafka-reassign-partitions.sh 。
过程
创建一个Topic,共2个分区,副本数为2(共2份,含原始数据):
/opt/kafka/bin/kafka-topics.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --create --replication-factor 2 --partitions 2 --topic testTopic1
查看该Topic。分区0的Leader是1,分区1的Leader是2:
[root@data01 bin]# /opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic testTopic1 Topic:testTopic1 PartitionCount:2 ReplicationFactor:2 Configs: Topic: testTopic1 Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: testTopic1 Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3 [root@data01 bin]#
准备一些数据,放在data.file中,然后将数据灌入Kakfa Topic:
/opt/kafka/bin/kafka-console-producer.sh --broker-list data01:9092,data02:9092,data03:9092 --topic testTopic1 < data.file
在各broker的数据目录下,可以看到当前对应的Topic分区目录:
[root@cheyo tmp]# dsh -g kafka -c "du -sh /opt/kafka/kafka-logs/testTopic*" data01: 44K /opt/kafka/kafka-logs/testTopic1-0 data02: 44K /opt/kafka/kafka-logs/testTopic1-0 data02: 4.0K /opt/kafka/kafka-logs/testTopic1-1 data03: 4.0K /opt/kafka/kafka-logs/testTopic1-1 [root@cheyo tmp]#
调整副本数据的配置是以json文件描述的,然后json文件作为参数传递给相关工具。json文件中描述了各个分区的复本如何放置。这里,我们分别为testTopic1的两个分区在原来的基础上新增加了第3个分区。
replication.json:
{ "version": 1, "partitions": [ { "topic": "testTopic1", "partition": 0, "replicas": [ 1, 2, 3 ] }, { "topic": "testTopic1", "partition": 1, "replicas": [ 2, 3, 1 ] } ] }
执行更新复本操作
/opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka \ --reassignment-json-file replication.json --execute
这个操作需要一些时间,我们可以通过如下命令查看进度(将上述命令中的 execute 参数改为 verify 参数:
/opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka \ --reassignment-json-file replication.json --verify
检查
操作完成后,再次查看topic的详细信息,可以看到相应的分区已经增加:
[root@data01 test]# /opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic testTopic1 Topic:testTopic1 PartitionCount:2 ReplicationFactor:3 Configs: Topic: testTopic1 Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3 Topic: testTopic1 Partition: 1 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1 [root@data01 test]#
相应的数据目录也已经增加:
[root@cheyo tmp]# dsh -g kafka -c "du -sh /opt/kafka/kafka-logs/testTopic*" data01: 44K /opt/kafka/kafka-logs/testTopic1-0 data01: 4.0K /opt/kafka/kafka-logs/testTopic1-1 data03: 40K /opt/kafka/kafka-logs/testTopic1-0 data03: 4.0K /opt/kafka/kafka-logs/testTopic1-1 data02: 44K /opt/kafka/kafka-logs/testTopic1-0 data02: 4.0K /opt/kafka/kafka-logs/testTopic1-1 [root@cheyo tmp]#
工具/kafka-reassign-partitions.sh说明
这个 工具 有三种参数:
1、带 generate 参数:生成建议的分区重分布方案
2、带 execute 参数:根据指定的分区重分布方案执行分区调整动作
3、带 verify 参数:查看 exceute 操作的结果。
本文档中使用了2和3两个参数。
补充
按这个用法,这个工具不仅可以用来增加分区数,在扩容broker数量等场景下,也可以用来调整各个分区在各个节点上的分布。
参考文档
以上所述就是小编给大家介绍的《修改Kafka Topic的分区副本数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Kakfa学习笔记(四)——分区和副本
- Kafka 源码解析:分区多副本容错机制
- Kafka 分区副本与 RocketMQ 队列的区别
- MongoDB部署副本集
- Mongodb 副本集+分片
- HDFS副本设置——默认3
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。