修改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的分区副本数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

大数据预测

大数据预测

【美】埃里克·西格尔 / 周昕 / 中信出版社 / 2014-3 / 58.00

360公司董事长周鸿祎、《罗辑思维》主讲人罗振宇郑重推荐 2020年的一天,在你驱车前往公司的路上,导航系统通过预测交通流量,会自动帮你选择一条最合适的交通路线;车内推荐系统会根据你的饮食习惯预测你可能会喜欢吃什么,并推荐沿途的早餐店;你的电子社交助理已经为你自动选择了你可能感兴趣的社交网信息;当车内系统预测到你驾车有些分心时,座椅会自动震动进行提醒…… 以上这些情景不是科幻大片独有的......一起来看看 《大数据预测》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码