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。根据我们的需求,可以手动来编写和修改迁移计划。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 对话框 显示图片_Java对话框上显示图片

手掌心其实有很多种方法可以解决图片显示大小的问题:使用photoshop修改. 优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作使用JDialog 自定义对话框. 优点 可以实现复杂的效果, 缺点,代码量比较多使用ImageIcon, Image 类 实现图片的缩放,. 优点…

class-dump获取iOS私有api

转自:http://blog.csdn.net/sunyuanyang625/article/details/41440167 获取各类iOS私有api 安装工具class-dump 资源地址http://download.csdn.net/detail/map625/8191343 运行class-dump并编译src项目 编译之后在produce中找到编译好的class…

火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍

随着近几年新媒体行业的高速发展,新媒体行业的红利也越来越来,也有越来越多的人想要享受到这波红利,于是不管是个人是企业都纷纷开始进入这个市场。不过也随之诞生了一系列麻烦繁琐的问题,如怎么持续创作内容,怎么花费…

java 采样_Java编程实现beta分布的采样或抽样实例代码

本文研究的主要是Java编程实现beta分布的采样或抽样,具体如下。本文将使用math3提供的工具包,对beta分布进行采样。如下程序是对alpha81,beta219的beta分布函数,进行抽样,共采样10000次。package function;/*** author…

树莓派 蓝牙音响_你应该拥有一个树莓派

为什么你应该拥有一个树莓派树莓派并不是极客的玩具树莓派可以用来做什么?它能实现的实在是太多了,最常见的比如自动化脚本 各种机器人bot: QQ/wechat/微博/facebook/telegram,IM结合爬虫 telegram的bot如今被黑产们结合比特币,做成了交易系统 使用宝塔linux面板,一键安装word…

训练集的识别率一直波动_机器学习验证集为什么不再有新意?

机器学习中,一般将样本数据分成独立的三部分:训练集、验证集和测试集。其中验证集在机器学习中所起到的作用是:开发模型总需要调节模型的参数,而整个调节过程需要在验证集数据上运行训练的模型,从而给出其表现的反馈信…

java写一个web聊天工具_javaweb写的在线聊天应用

写这个玩意儿就是想练练手, 用户需要登陆才能在线聊天,不要依赖数据库, 不需要数据库的操作, 所有的数据都是保存在内存中, 如果服务器一旦重启,数据就没有了;登录界面:聊天界面&…

人物角色群体攻击判定(一)

我们制作3D动作游戏的时候,常常主人公是一对多人进行攻击,或者敌人在角色前方一定范围内进行攻击. 我们怎么实现这种效果呢? 1. 使用触发器(多体攻击)方便调试,可视化(推荐)2. 运用点乘和叉乘,判断敌人的角度和位置(单,多)一般3. 使用Physics的Physics.OverlapSpher…

mfc cimage加载显示图片_在微信小程序里实现图片预加载组件

网页中的图片预加载我们知道在 Web 页面中实现图片的预加载其实很简单,通常的做法是在 JS 中使用 Image 对象即可,代码大致如下var image new Image() image.onload function() {console.log(图片加载完成) } image.src"//misc.360buyimg.com/lib…

HDU 2242 双连通分量 考研路茫茫——空调教室

思路就是求边双连通分量&#xff0c;然后缩点&#xff0c;再用树形DP搞一下。 代码和求强连通很类似&#xff0c;有点神奇&#xff0c;_&#xff0c;慢慢消化吧 1 #include <cstdio>2 #include <cstring>3 #include <algorithm>4 #include <vector>5 #…

java注册中心nacos_spring-cloud整合nacos做注册中心

前面讲了spring-cloud整合nacos做配置中心&#xff0c;这节讲一下nacos做注册中心至于注册中心是什么&#xff0c;我就不讲了&#xff0c;不了解的可以去问度娘下面我就直接开始了&#xff0c;也是比较简单的&#xff1a;1.引入依赖1.8Greenwich.SR12.1.0.RELEASEorg.springfra…

Android基于mAppWidget实现手绘地图(二)--概要

离线地图是一张被切成类似瓷砖般格子图像组成&#xff0c;这些被切开的格子组织成多个缩放级别。缩放级别是从0开始。0这个缩放级别&#xff0c;地图图像的尺寸为1*1像素。在每下一个缩放级别&#xff0c;图像尺寸则会两倍递增。 每个地图都是有层和地图对象的。 层是一个抽象的…

java实体字节属性定义_Java字节码方法表与属性表详解

而这些字节其实对应的信息是它&#xff1a;所以问题就来了&#xff0c;aload_0不是助记符信息么&#xff0c;怎么就能够跟字节码文件中的字节对应上呢&#xff1f;所谓助记符其实也就是帮忙我们去记忆的符合&#xff0c;在底层其实也是对应的一个个十六进制的数字的&#xff0c…

允许使用抽象类类型 isearchboxinfo 的对象_此对象非彼对象(面向对象)3

java13面向对象深入3大纲这里没有写面向对象-封装性理解封装( encapsulation)怎么去理解&#xff0c;一台电脑利用一个外壳包裹&#xff0c;保护了里面的电器元件&#xff0c;提供了少量的按键与其对接使用。我要看电视&#xff0c;只需要按一下开关和换台就可以了。有必要了解…

复制url直接能跳过验证_python 爬虫如何突破登录验证

我用 python 做爬虫爬过不少数据&#xff0c;比如在 google play 爬应用信息&#xff1b;在 instragram, 500px 爬图片&#xff1b;当然爬虫的作用不止于此&#xff0c;比如定时去某个网站签到&#xff0c;妈妈再也不用担心我忘记签到了这些网站支持游客访问&#xff0c;但要访…

[2-sat]HDOJ3062 Party

中文题 题意略 学2-sat啦啦啦 2-sat就是 矛盾的 ($x、x’$不能同时取) m对人 相互也有限制条件 取出其中n个人 也有可能是把一件东西分成 取/不取 相矛盾的两种情况 (那就要拆点啦~) 取其中n件 做法是 暴力 和 强连通 两种 重点在于建图&#xff1a; 对于x&#xff0c;记 取…

Winodws live writer

发布一篇试试。 转载于:https://www.cnblogs.com/DotNetCSharp/p/4742956.html

java里面value_「Java基础知识」Java中包含哪些运算符

原标题&#xff1a;「Java基础知识」Java中包含哪些运算符在Java中包含的运算符有&#xff1a;算数运算符&#xff0c;逻辑运算符&#xff0c;关系运算符等。算数运算符也就是我们平时的加减乘除余等操作&#xff1a;在Java中都是将右边的值赋值给左边&#xff0c;所以一般格式…

idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

之前都没试过用maven来管理过项目&#xff0c;但是手动找包导包确实不方便&#xff0c;于是今天用2016版的IDEA进行了maven的初尝试。打开IDEA&#xff0c;创建新项目&#xff1a;然后选择Maven&#xff0c;以及选择自己电脑的jdk&#xff1a;接下来自定义GroupId以及ArtifactI…

servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)

我们在开发中无时无刻都在与Servlet进行接触&#xff0c;只是因为框架的封装性&#xff0c;我们很少直接地去操作servlet&#xff0c;但再怎么封装&#xff0c;基本的思路都不会变化&#xff0c;变得只是实现的方式&#xff0c;Servlet是什么&#xff1a;网上的回答基本是Servl…