kafka创建topic命令_0748-5.14.4-Kafka的扩容和缩容

​文档编写目的

在Kafka集群资源使用已超出系统配置的资源时,或者有大量资源闲置造成资源浪费的时候,需要分别通过扩容Kafka和缩容Kafka来进行调整。本篇文章Fayson主要介绍如何进行Kafka的扩容和缩容,以及变更后的Kafka集群如何进行负载均衡的操作。

  • 测试环境:

1.Redhat7.2

2.采用root用户操作

3.CM为5.16.2,CDH为5.14.4

4.Kafka版本为0.10.2

5.集群启用了Kerberos,Kafka未启用Kerberos和Sentry

Kafka集群的扩容

2.1 当前Kafka集群状态

集群中有3个kafka broker

3b469c60a200ec9bc31f51fae618ed01.png

有2个topic,分别为test和test1,情况如下

1b700ddbeb84c42c667e6c694bea7ed1.png
1799198729f60e2db732fbfc3561b108.png

2.2 扩容前准备

新扩容的机器要先加入集群中,通过CM管理,按照下面的步骤进行操作

1.修改新添加的机器的hostname

[root@hadoop6 ~]# hostnamectl set-hostname cdh04.hadoop.com
8739d1b8e606a50cb3358574124c4900.png

2.修改/etc/hosts文件并同步到所有节点,这里用脚本来实现。

192.168.0.204 cdh01.hadoop.com cdh01192.168.0.205 cdh02.hadoop.com cdh02192.168.0.206 cdh03.hadoop.com cdh03192.168.0.195 cdh04.hadoop.com cdh04
4fb3a81126177b25e892074f16f30f6d.png
f044fc4ffd249601c4faa3d8c4303ace.png

3.新添加的节点关闭防火墙,设置开机自动关闭

[root@cdh04 ~]# systemctl stop firewalld[root@cdh04 ~]# systemctl disable firewalld
36ec3047a41bb7f6d0e9f294ac2a832e.png

4.新添加的节点禁用SELinux,并修改修改/etc/selinux/config

[root@cdh04 ~]# setenforce 0setenforce: SELinux is disabled[root@cdh04 ~]# vim /etc/selinux/config
cccab90340efc56fac928051f3697acf.png

5.新添加的节点关闭透明大页面,并且在/etc/rc.d/rc.local 里面加入脚本,设置自动开机关闭。

[root@cdh04 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag[root@cdh04 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled[root@cdh04 ~]# vim /etc/rc.d/rc.localif test -f /sys/kernel/mm/transparent_hugepage/defragthen echo never > /sys/kernel/mm/transparent_hugepage/defragfiif test -f /sys/kernel/mm/transparent_hugepage/enabledthen echo never > /sys/kernel/mm/transparent_hugepage/enabledfi
a654f6de5f7af9e30256d068be7ca0d4.png
[root@cdh04 ~]# chmod +x /etc/rc.d/rc.local

6.新添加的节点设置SWAP,并且设置开机自动更改

[root@cdh04 ~]# sysctl vm.swappiness=1vm.swappiness = 1[root@cdh04 ~]# echo vm.swappiness = 1  >> /etc/sysctl.conf
6b4bd88560bb211441332efde9213583.png

7.新添加的节点配置时钟同步,先在所有服务器卸载chrony,再安装ntp,再修改配置把时钟同步跟其他kafka broker节点保持一致

[root@cdh04 ~]# yum -y remove chrony[root@cdh04 ~]# yum -y install ntp
6184ee77e1acb403a60f2e4d67047341.png
vim /etc/ntp.conf
b318a44e2e77da7e6b9922345b8752eb.png

启动ntp服务,并设置开机启动

[root@cdh04 java]# systemctl start ntpd[root@cdh04 java]# systemctl enable ntpd

8.新添加的节点安装kerberos客户端,并进行配置

[root@cdh04 ~]# yum -y install krb5-libs krb5-workstation
4e0c813e07176e443f19de064ad15b2b.png

从其他节点拷贝/etc/krb5.conf文件到新节点

da29feb4badb76e17b40e5427e8ae86a.png

9.从其他节点拷贝集群使用的JDK到新节点/usr/java目录下

[root@cdh01 java]# scp -r jdk1.8.0_131/ cdh04:/usr/java/jdk1.8.0_131/
2b50ca74b13f98f1f583359de7e38ef9.png

10.在CM编辑主机模板kafka,只添加kafka broker角色

303c9a6ebcc6f7df1a37ade5fbab51da.png

2.3 扩容Kafka

1.添加新的节点到集群,从CM主页点击Add Hosts,如下图所示

112a4f8d0e92f59b31a6268184c08a61.png

2.点击继续

35f0f993d24924263f56af07d4257550.png

3.搜索主机,输入主机名,点击搜索并继续

9c1315993bccd67842dbe47273d3d88a.png
f7fd3ddf2fd1a2495dfd9cf4b8813e01.png

4.输入自定义存储库地址,并继续

4b955bcfa2d0dcdc5b168dd8e16c6162.png

5.点击安装JDK并继续

e1962c4210b55bae872c3f4b9cb4a3c2.png

6.输入主机密码并继续

91fb31998905affcfcd6327243a411c2.png

7.正在进行安装,安装成功后点击继续

600cb5daf4d066150d073f0c08720f28.png
c9355c61b4e8b294544da33cce362a17.png
a9c67726b86aaa239a3438c0c668e102.png

激活完成,点击继续

907c2e691cb1cbe694bc175472040241.png

8.点击继续,进入主机检查,添加主机完成

d4e512b56ac6568a3b267eaec63ada5c.png

9.应用主机模板kafka,扩容完成

601268a212b3c8b13c7d31610c9dfc34.png
8294b193a6db1ff05038b69181583fe8.png

扩容完成

45d8602200529803780b4d182220cb47.png

扩容后平衡

在扩容完成后,可以通过自带的命令来生成topic的平衡策略和执行平衡的操作。

3.1 生成平衡策略

1.查询当前创建的topic

[root@cdh01 ~]# kafka-topics --list --zookeeper cdh01.hadoop.com:2181
6bed370127b20e41ade26a5f3c8cd973.png

2.按照查询到的topic来创建文件topics-to-move.json 格式如下

{"topics": [{"topic": "test"},{"topic": "test1"}            ],"version":1}
b3274a56475e73dbd9f90592d71088fa.png

3.在CM查询kafka broker的ID

3140a0315f56d13dcc206797c64ca10a.png

4.用命令生成迁移方案,下面画红框的就是生成的平衡方案

kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --topics-to-move-json-file topics-to-move.json  --broker-list "121,124,125,126" --generate
3ef4571bcf91b9cc4418f75d1bcfb07a.png

5.把Proposed partition reassignment configuration下的内容复制保存为json文件newkafka.json,平衡方案生成完成。

0193f1d26d8ea74703b6c041f03178e9.png

3.2 执行平衡策略

1.执行下面的命令来进行平衡

[root@cdh01 ~]# kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --reassignment-json-file newkafka.json --execute
07f42e0834b83cb4d517330fe93feb6e.png

2.用下面命令来进行查看执行的进度

kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --reassignment-json-file newkafka.json --verify
9aa81c350ded2f4af89308ee45101e95.png

从结果可以看到已经执行完成。,并且在新添加的节点上也可以看到有topic的副本存过来了。

38846468a01d2008600c732db0e3a94c.png

缩容前的准备

1.编辑之前创建的topics-to-move.json文件,添加上系统自动生成的__consumer_offsets

[root@cdh01 ~]# vim topics-to-move.json {"topics": [{"topic": "test"},{"topic": "__consumer_offsets"},{"topic": "test1"}            ],"version":1}
4421457fb7a6f1eb1bd45cb9efdabd29.png

2.再次使用命令生成迁移计划,这里只选取121,124,126这三个broker,然后把生成计划中的126替换成125进行保存,这样就把126上的数据全部迁移到了125上。

kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --topics-to-move-json-file topics-to-move.json  --broker-list "121,124,126" --generate
a868fc635a35661c0dee1f54af9d32bf.png
884965c01ebf6abbeea117013b990b3c.png

3.执行迁移命令,进行迁移

kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --reassignment-json-file newkafka.json --execute
d712a5ca973a2abeb8cacaaa4bb0cbe8.png

4.进行查询,迁移完成

kafka-reassign-partitions --zookeeper cdh01.hadoop.com:2181 --reassignment-json-file newkafka.json --verify
c93f80ead971c7feb498cd11f8ff392e.png

5.在要删除的broker上也可以看到,topic数据已经迁移走

1772b6f59564a6832f43fa7ac33ca8e2.png

Kafka集群的缩容

在完成上诉缩容前的准备后,现在可以进行kafka集群的缩容。

1.从CM进入Kafka的实例界面

09ddf54d7b61a8aa63da37a410a2d9bb.png

2.勾选要删除的broker,先停止该broker

fe223607e5c56e1f487c1ac996d45f95.png

3.停止完成后,进行删除

058332f8bf36aa34af8ea15d73791861.png

删除完成。

a92e02572cd27c9c68136b4b8935d29b.png

总结

1.Kafka集群的扩容和缩容可以通过CM来进行添加broker和删除broker来进行。

2.在Kafka集群扩容后,已有topic的partition不会自动均衡到新的磁盘上。可以通过kafka-reassign-partitions命令来进行数据平衡,先用命令生成平衡方案,再执行。也可以手动编辑迁移方案来进行执行。

3.新建topic的partition, 会以磁盘为单位,按照partition数量最少的来落盘。

4.在Kafka缩容前,需要把要删除的broker上的topic数据迁出,也可以通过kafka-reassign-partitions来进行迁移,手动编辑迁移方案,再通过命令执行即可。

5.kafka-reassign-partitions这个命令,只有指定了broker id上的topic才会参与partition的reassign。根据我们的需求,可以手动来编写和修改迁移计划。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值