(11)Kafka分区数只加不减(2)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(11)Kafka分区数只加不减(2)相关的知识,希望对你有一定的参考价值。

参考技术A topic创建后,可修改分区数、配置等,功能由kafka-topics.sh脚本中alter指令提供。

例:主题topic-config,分区 数1改3

告警信息:" topic有key时(不null),根据key计算分区就有所影响 " 。1发往一个分区;3原本发分区0,可能发分区1或2。

减少分区报出InvalidPartitionException异常:

1、不可靠:

     1)存现有分区尾部,时间戳不递增 ,Spark、Flink需时间戳(事件时间)组件受影响

     2)分散插入, 复制占用很大资源,复制期间,可用性、顺序性、事务性、状态机切换问题

2、如真要实现,创建 分区数小topic,现有 复制 过去

3、但分区副本数可减少 ,用kafka-reassign-partition.sh脚本实现

https://mp.weixin.qq.com/s/oMNR2mAffS5pP576o5sbgQ

【kafka】kafka数据迁移、分区副本重分配

参考技术A 关键参数--generate
在进行分区副本重分配之前,最好是用下面方式获取一个合理的分配文件;
编写move-json-file.json文件; 这个文件就是告知想对哪些topic进行重新分配的计算。

然后执行下面的脚本,--broker-list "0,1,2" 这个参数是你想要分配的Brokers。

执行完毕之后会打印:

需求注意的是,此时分区移动尚未开始,它只是告诉你当前的分配和建议。保存当前分配,以防你想要回滚它。

关键参数--execute将上面得到期望的重新分配方式文件保存在一个json文件里面 reassignment-json-file.json

kafka并没有提供一个专门的脚本来支持副本的扩缩, 不像kafka-topic.sh脚本一样,是可以扩分区的;
想要对副本进行扩缩,只能是曲线救国,利用kafka-reassign-partitions.sh来重新分配副本。

假设我们当前的情况是 3分区1副本,为了提供可用性,我想把副本数升到2;

计算副本分配方式
我们用 --generate 获取一下当前的分配情况,得到如下json

数据迁移、分区副本重分配、跨路径迁移、副本扩缩容
https://developer.aliyun.com/article/785752
https://www.szzdzhp.com/kafka/op/op-partition-reasignment.html

kafka最小成本的扩缩容副本设计方案
https://blog.csdn.net/u010634066/article/details/120931626

你不知道的kafka配置broker.id
https://cloud.tencent.com/developer/news/378568

json 格式化校验
https://www.bejson.com

kafka修改分区、副本数、副本迁移
https://sukbeta.github.io/kafka-Modify-Partitions-and-ReplicationFactor

kafka扩容副本数
https://www.cnblogs.com/mysql-hang/articles/14327103.html

以上是关于(11)Kafka分区数只加不减(2)的主要内容,如果未能解决你的问题,请参考以下文章

Kafka分区有啥好处?

Kafka源码分析11:PartitionStateMachine分区状态机(图解+秒懂+史上最全)

Kafka源码分析11:PartitionStateMachine分区状态机(图解+秒懂+史上最全)

Kafka 分区和 Kafka 副本有啥区别?

数据写入kafka的分区策略

Kafka分区分配策略