命令行方式修改
创建Kafka实例Topic成功之后,您可以根据业务需要修改Topic的分区数。分区数只支持增加,不支持减少。
Kafka客户端版本为2.2以上时,支持通过kafka-topics.sh修改Topic分区数。
未开启SASL的Kafka实例,在“/{命令行工具所在目录}/kafka_{version}/bin/”目录下,通过以下命令修改Topic分区数。
#方法一
./kafka-topics.sh --bootstrap-server {broker_ip}:{port} --topic {topic_name} --alter --partitions {partition_num}
#方法二
kafka-topics.sh --zookeeper {zk_ip}:{port} --topic {topic_name} --alter --partitions {partition_num}
具体操作步骤如下
首先查看topic目前分区数
root@fa12e66b1540:/# kafka-topics.sh --zookeeper 192.168.31.70:2181/kafka --describe --topic abcdocker
Topic: abcdocker TopicId: jY3Y5iKpSNqKUfp7JZCGQg PartitionCount: 2 ReplicationFactor: 1 Configs:
Topic: abcdocker Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: abcdocker Partition: 1 Leader: 1 Replicas: 1 Isr: 1
目前可以看到PartitionCount分区数为2,副本为1
接下来将PartitionCount调整为7
下面2种方式都可以进行调整,选择其中一种就行
kafka-topics.sh --zookeeper 192.168.31.70:2181/kafka --topic abcdocker --alter --partitions 7
kafka-topics.sh --alter --partitions 7 --topic abcdocker --bootstrap-server 192.168.31.70:9092
查看效果
root@fa12e66b1540:/# kafka-topics.sh --zookeeper 192.168.31.70:2181/kafka --describe --topic abcdocker
Topic: abcdocker TopicId: jY3Y5iKpSNqKUfp7JZCGQg PartitionCount: 7 ReplicationFactor: 1 Configs:
Topic: abcdocker Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: abcdocker Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: abcdocker Partition: 2 Leader: 2 Replicas: 2 Isr: 2
Topic: abcdocker Partition: 3 Leader: 0 Replicas: 0 Isr: 0
Topic: abcdocker Partition: 4 Leader: 1 Replicas: 1 Isr: 1
Topic: abcdocker Partition: 5 Leader: 2 Replicas: 2 Isr: 2
Topic: abcdocker Partition: 6 Leader: 0 Replicas: 0 Isr: 0
root@fa12e66b1540:/# kafka-topics.sh --bootstrap-server 192.168.31.70:9092 --describe --topic abcdocker
Topic: abcdocker TopicId: jY3Y5iKpSNqKUfp7JZCGQg PartitionCount: 7 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: abcdocker Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: abcdocker Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: abcdocker Partition: 2 Leader: 2 Replicas: 2 Isr: 2
Topic: abcdocker Partition: 3 Leader: 0 Replicas: 0 Isr: 0
Topic: abcdocker Partition: 4 Leader: 1 Replicas: 1 Isr: 1
Topic: abcdocker Partition: 5 Leader: 2 Replicas: 2 Isr: 2
Topic: abcdocker Partition: 6 Leader: 0 Replicas: 0 Isr: 0
已开启SASL的Kafka实例,通过以下步骤修改Topic分区数。
在Kafka客户端的/config
目录中创建ssl-user-config.properties
文件,参考3增加SSL证书配置。
在/{命令行工具所在目录}/kafka_{version}/bin/
目录下,通过以下命令修改Topic分区数。
./kafka-topics.sh --bootstrap-server {broker_ip}:{port} --topic {topic_name} --alter --partitions {partition_num} --command-config ./config/ssl-user-config.properties
Kafka Manager修改分区数
登录Kafka Manager
在Kafka Manager中,单击“Topic > List”,进入Topic列表界面。
单击Topic名称,进入Topic详情界面。
单击“Add Partitions”,进入增加分区界面。