15、kafka集群维护

1、集群信息实时查看工具(topic工具)

(1)列出集群当前所有可用的topic
kafka-topics.sh --list --zookeeper kafka1:2181
在这里插入图片描述
(2)查看集群特定的topic信息
/bin/kafka-topics.sh --describe --zookeeper 192.168.12.150:2181 --topic test-topic
在这里插入图片描述
(3)创建topic
bin/kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 3 --partitions 1 --topic Multibrokerapplication
在这里插入图片描述
(4)增加(不能减少)分区(最后的4表示增加后的值)–提高并发度
bin/kafka-topics.sh --zookeeper kafka1:2181 --alter --topic test-topic --partitions 4
在这里插入图片描述

2、kafka集群leader平衡机制

每一个partition的所有replicas副本叫做“assinged replicas”分配备份,分配副本中的第一个replicas叫做“preferred replica”偏爱备份,刚创建的topic一般偏爱副本是leader。

集群leader平衡
如果偏爱分区不是leader的情况可以操作如下(手动)
bin/kafka-preferred-replica-election.sh --zookeeper kafka1:2181

自动设置偏爱分区是否是leader,如果不是则动态运行以上命令
auto.leader.rebalance.enable=true

3、集群分区日志迁移

如果最开始的集群的机器只有10台,新增加4台机器,此时想把之前10台上的数据迁移到新增加的四台上,比如迁移某个topic或者迁移某个topic的某个分区到新增加的机器上,需要用到集群分区,日志迁移工具

1、迁移整个topic数据到其他的broker上,遵循如下四个步骤:
(1)编写json文件topics-to-move.json,文件格式如下

{
    "topics":[{"topic": "foo1"}, {"topic":"foo2"}],
    "version":1
}

(2)使用–generate生成迁移计划
如下操作是将topic: foo1和foo2移动到broker5和broker6中
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topic-to-move-json-file topics-to-move.json --broker-list "5,6" --generate

这一步仅仅是生成计划,斌没有执行数据迁移(指定迁移配置文件和指定迁移的broker列表),控制台将打印当前分区计划和新的分区计划。

将生成的计划保存到expand-cluster-reassignment.json中。

(3)使用–execute执行计划

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --execute

执行前最好保存当前的分配情况,以防止出错回滚!

(4)使用–verrify验证是否已经迁移完成

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --verify

(5)最后查看某个topic的分配情况

bin/kafka-topic --describe --zookeeper localhost:2181 --topic foo1

2、迁移某个topic的某些特定的partition数据到其他broker,步骤与上面一样
只需更改迁移配置文件即可,这里使用custom-reassignment.json配置文件

vim custom-reassignment.json

修改内容

{
    "version": 1,
    "partitions":[{"topic": "foo1", "partition": 0, "replicas": [5, 6]}, {"topic": "foo2", "partition": 1, "replicas": [2, 3]} ]
}

将foo1主题的0分区,迁移到5,6上,foo2主题的1分区迁移到2,3上

3、注意问题
kafka-reassign-partitions.sh工具会复制磁盘上的日志文件,只有当完全复制完成才会删除迁移前磁盘上的日志文件。执行分区日志迁移需要注意:

(1)kafka-reassign-partitions.sh工具的粒度只能到broker,不能到broker的目录(如果broker配置了多个目录,是按照磁盘上面已驻留的分区数来均匀分配的),所以如果topic之间的数据,或者topic的partition之间的数据本身就不均匀,很可能造成磁盘数据的不均匀。
(2)对于分区数据较多的分区迁移数据会花大量时间,所以建议在topic数据量较少或磁盘有效数据较少的情况下执行数据迁移操作
(3)进行分区迁移时最好保留一个分区在原来的磁盘,这样不会影响正常的消费和生产,如果目的是将分区5(broker1,5,leader为1,作为主轴)迁移到broker2,3.可以先将5迁移到2,1(1没有变,还是leader,服务器5上数据到了2上,1上的数据没有变),最后在迁移1的5分区 到2,3(然后将2作为leader,2不变1迁移到3),。而不是一次将1,5迁移到2,3(因为此时可能有生产和消费者在生产和消费).因为一次迁移所有的副本,无法正常消费和生产,部分迁移则可以正常消费和生产。

快来成为我的朋友或合作伙伴,一起交流,一起进步!:
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值