修改Kafka Topic的分区副本数

栏目: 后端 · 发布时间: 6年前

内容简介: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的副本(Replication)


以上所述就是小编给大家介绍的《修改Kafka Topic的分区副本数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试