Kafka集群扩容「建议收藏」

Kafka集群扩容「建议收藏」Kafka集群的服务发现是有zk实现的,因此想kafka集群添加新的broker就非常容易。我们只需要为新的broker设置一个唯一的broker.id,然后启动新增的kafka就行。Kafka集群会自动发现新增的broker并同步原数据,包括当前集群有哪些topics以及topics的分区信息等。但是我们需要的注意的一点,新增的broker不能分担之前已经创建的topic的负载,必须手动执行…

大家好,又见面了,我是你们的朋友全栈君。

Kafka集群的服务发现是有zk实现的,因此想kafka集群添加新的broker就非常容易。我们只需要为新的broker设置一个唯一的broker.id, 然后启动新增的kafka就行。Kafka集群会自动发现新增的broker并同步原数据,包括当前集群有哪些topics以及topics的分区信息等。

但是我们需要的注意的一点,新增的broker不能分担之前已经创建的topic的负载,必须手动执行重新分区才能从为新增broker添加之前的已经存在的topics服务。当然如果不执行重新分组,之后新添加的topics会自动将负载分担到新broker上。

Kafka提供的重分区工具是kakfa-reassign-partitions.sh(bat),默认在<kafka_install_dir>\bin, 例如,
在这里插入图片描述

分区重新分配工具可以以3种互斥模式运行:

--generate:在此模式下,给定主题列表和代理列表,该工具会生成候选重新​​分配,以将指定主题的所有分区移动到新代理。此选项仅提供了一种方便的方法,可在给定主题和目标代理列表的情况下生成分区重新分配计划。
--execute:在此模式下,该工具根据用户提供的重新分配计划启动分区的重新分配。(使用--reassignment-json-file选项)。这可以是由管理员手工制作的自定义重新分配计划,也可以使用--generate选项提供
--verify:在此模式下,该工具将验证最后一次--execute期间列出的所有分区的重新分配状态。状态可以是成功完成,失败或正在进行中

操作

我先只有一个broker0, 然后创建了yqtopic1和yqtopic2两个topic, 这两个topic都是2个分区,一个副本(一个broker上副本机制效果不大,只是为了演示)
1, 第一步生成重分区文件
创建一个要重分区的topic文件 yqToMoveTopics.json

{ 
   "topics": [{ 
   "topic": "yqtoipc1"},

            { 
   "topic": "yqtopic2"}],

"version":1
}
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file yqToMoveTopics.json --broker-list "0,1" --generate

2, 执行重分区

./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file /opt/reassign-partitions.json --execute

3, 验证重分区成功

./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file /opt/reassign-partitions.json  --verify

先创建对象的topic

在这里插入图片描述

启动broker2后,重新分配分区
在这里插入图片描述

具体可以看截图消息。 因为我的topic数据很少,所以可以快速完全重新分区,但是实际生产系统,我们一定要选择业务空闲期执行,而且数据量大的话会执行很长时间。

备注:kafka还提供重分区时限制带宽以保证生产系统平稳。

官方文档:http://kafka.apache.org/10/documentation.html#rep-throttle
kafka-reassign-partitions.sh –zookeeper myhost:2181–execute –reassignment-json-file bigger-cluster.json —throttle 50000000

这样当执行重分区时,你会发现he throttle limit was set to 50000000 B/s, 也就是速率被限制在每秒50000000字节。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145876.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java的所有版本

    java的所有版本java16与JDK15一样,JDK16将是一个短期版本,支持六个月。将于2021年9月发布的JDK17将是一个长期支持(LTS)版本,将获得数年的支持。当前的LTS版本JDK11已于2018年9月发布。JDK16预计20213月到来。java16JavaSE15JavaSE14JavaSE13JavaSE12JavaSE11JavaSE10JavaSE9JavaSE8(8u211andlater)JavaSE8(8u

  • HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

    HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

    2021年10月12日
  • 数字证书理解(CA证书签名原理)[通俗易懂]

    数字证书理解(CA证书签名原理)[通俗易懂]目的为了防止中间人攻击和钓鱼基础概念(要求预先了解的知识概念)对称密钥体系(对称加密)和非对称密钥体系(非对称加密)都提供2份秘钥。公钥私钥是概念上的,发布出去的为公钥,留在手上的为私钥,实质上不存在公私钥区别。特殊的:在实际操作中,生成RSA(特别的:一种加密方式)密钥时会有两个秘钥,其中一份包含另一份的完整信息【此时默认命名为私钥】——->这就是为什么私钥可以推导出公…

  • python检验多重共线性_利用Python进行VIF检验[通俗易懂]

    python检验多重共线性_利用Python进行VIF检验[通俗易懂]在统计学中,多重共线性(共线性)是指多元线性回归模型中的某个预测变量(自变量/解释变量)可以以相当大的准确度通过其他预测变量线性预估。在这种情况下,模型或数据的微小变化就可能导致多元回归模型的系数估计值出现不规律地改变,可能造成如下后果:回归系数的普通最小二乘估计量可靠度降低。如图1与2所示,随着多重共线性程度的提高,参数方差(表示变量与的相关度)会急剧上升到很大的水平,理论上使最小二…

  • [Halcon&标定] 单相机标定「建议收藏」

    [Halcon&标定] 单相机标定「建议收藏」为什么要进行单相机标定?广义:畸变矫正和一维和二维测量1)畸变矫正:    在几何光学和阴极射线管(CRT)显示中。畸变是对直线投影的一种偏移。简单来说直线投影是场景内的一条直线投影到图片上也保持为一条直线。那畸变简单来说就是一条直线投影到图片上不能保持为一条直线了。这是一种光学畸变(opticalaberration)。畸变是一种相差…

  • EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)「建议收藏」

    EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)「建议收藏」EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)在预览图片的时候,利用手势控制图片的缩放、平移,已经是智能手机时代最基本的操作。而对于视频,很少有播放器支持这样的操作。实际上,在观看视频的时候,我们可能会想观看某个区域的局部细节,需要把该区域放大来观看,EasyPlayer播放器基于这样的需求,提供了局部放大的功能。感谢github上开源库PhotoView,它在ImageView

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号