|NO.Z.00056|——————————|BigDataEnd|——|Hadoop&kafka.V41|——|kafka.v41|修改分区副本|
一、修改分区副本
### --- 修改分区副本
~~~ # 实际项目中,
~~~ 我们可能由于主题的副本因子设置的问题,
~~~ 需要重新设置副本因子或者由于集群的扩展,需要重新设置副本因子。
~~~ topic一旦使用又不能轻易删除重建,因此动态增加副本因子就成为最终的选择。
~~~ # 说明:
~~~ kafka 1.0版本配置文件默认没有default.replication.factor=x, 因此如果创建topic时,
~~~ 不指定–replication-factor 想,
~~~ 默认副本因子为1. 我们可以在自己的server.properties中配置上常用的副本因子,省去手动调整。
~~~ 例如设置default.replication.factor=3,
~~~ 详细内容可参考官方文档https://kafka.apache.org/documentation/#replication
### --- 原因分析:
~~~ # 假设我们有2个kafka broker分别broker0,broker1。
~~~ #当我们创建的topic有2个分区partition时并且replication-factor为1,基本上一个broker上一个分区。
~~~ 当一个broker宕机了,该topic就无法使用了,因为两个个分区只有一个能用。
~~~ #当我们创建的topic有3个分区partition时并且replication-factor为2时,
~~~ #可能分区数据分布情况是
~~~ broker0, partiton0,partiton1,partiton2, broker1, partiton1,partiton0,partiton2,
~~~ 每个分区有一个副本,当其中一个broker宕机了,kafka集群还能完整凑出该topic的两个分区,
~~~ 例如当broker0宕机了,可以通过broker1组合出topic的两个分区。
二、创建项目
### --- 创建主题:
[root@hadoop01 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \
--create --topic tp_re_02 --partitions 3 --replication-factor 1
### --- 查看主题细节:
[root@hadoop01 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \
--describe --topic tp_re_02
~~~输出参数
Topic:tp_re_02 PartitionCount:3 ReplicationFactor:1 Configs:
Topic: tp_re_02 Partition: 0 Leader: 1 Replicas: 1 Isr: 1
Topic: tp_re_02 Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: tp_re_02 Partition: 2 Leader: 1 Replicas: 1 Isr: 1
### --- 修改副本因子:错误
[root@hadoop01 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --alter --topic tp_re_02 --replication-factor 2
Option "[replication-factor]" can't be used with option"[alter]"
三、修改主题副本因子
### --- 使用kafka-reassign-partitions.sh 修改副本因子:创建increment-replication-factor.json
[root@hadoop01 ~]# vim increment-replication-factor.json
{
"version":1,
"partitions":[
{"topic":"tp_re_02","partition":0,"replicas":[0,1]},
{"topic":"tp_re_02","partition":1,"replicas":[0,1]},
{"topic":"tp_re_02","partition":2,"replicas":[1,0]}
]
}
### --- 执行分配
[root@hadoop01 ~]# kafka-reassign-partitions.sh --zookeeper \
localhost:2181/myKafka --reassignment-json-file \
increment-replication-factor.json --execute
~~~输出参数
Current partition replica assignment
{"version":1,"partitions":[{"topic":"tp_re_02","partition":2,"replicas":
[1],"log_dirs":["any"]},{"topic":"tp_re_02","partition":1,"replicas":
[0],"log_dirs":["any"]},{"topic":"tp_re_02","partition":0,"replicas":
[1],"log_dirs":["any"]}]}
Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions.
### --- 查看主题细节:
[root@node1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \
--describe --topic tp_re_02
~~~输出参数
Topic:tp_re_02 PartitionCount:3 ReplicationFactor:2 Configs:
Topic: tp_re_02 Partition: 0 Leader: 1 Replicas: 0,1 Isr: 1,0
Topic: tp_re_02 Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1
Topic: tp_re_02 Partition: 2 Leader: 1 Replicas: 1,0 Isr: 1,0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv013-kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!