【Kafka】单分区单副本增加至多分区多副本

news2025/8/13 8:02:28

一、背景

系统:CentOS Linux release 7.9.2009 (Core)
Kafka版本:2.11-2.0.0.3.1.4.0-315 [scala版本2.11;kafka 2.0.0版本;基于ambari3.1.4.0-315的版本 ]

二、现象

业务系统中总是报警:kafka消费延迟。

三、问题排查过程

1、通过监控发现,某个topic A(脱敏名)在业务高峰的时候,总是报消费延迟。
2、不过经过查看监控发现,也有其他topic B(脱敏名)在峰值时,跟topic A生产数据量差不多,但是不会报消费延迟。
3、查看消费速度,发现topic A的消费速率比topicB的消费速率低不少。消费延迟由此产生。
4、查看topic A的分区发现,只有1个分区;而topic B的分区数量是20个。
在这里插入图片描述
在这里插入图片描述

5、确定业务上消费者程序是4个。

四、原因分析

经过排查发现,topic A消费力差的原因是消费者数量太少。业务峰值时消费压力大大超过了单个消费者的消费能力(每个消费者同时在消费其他topic的数据)。

五、解决

增加分区数,提高消费并行度。

1、选取最佳分区数

当前5个kafka broker,有4个消费者程序。所以出于消费压力和存储负载的考虑,最佳分区数应该是4*5=20个。

2、获取基础重分配文件内容

首先填写当前topic的消息,用于获取重分配文件

{"topics":[{"topic":"topicA"}],"version":1}

获取topicA的分区和副本数json格式结果

/usr/hdp/current/kafka-broker/bin/kafka-reassign-partitions.sh --zookeeper zookeeper1.jdicity.local:2181 --topics-to-move-json-file topic-to-move.json --broker-list "1001,1002,1003,1004,1005" --generate

获取Proposed的json,作为后面重分配json文件的基础
获取Proposed的json

3、增加分区数
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --zookeeper zookeeper1.jdicity.local:2181 --topic topicA --alter --partitions 20
4、规划分区与broker的对应关系,编辑重分配json文件reassign-plan.json(20分区,3副本)

通过

{
    "version":1,
    "partitions":[
        {
            "topic":"topicA",
            "partition":0,
            "replicas":[
                1003,
                1002,
                1001
            ]
        },
        {
            "topic":"topicA",
            "partition":1,
            "replicas":[
                1002,
                1003,
                1004
            ]
        },
        {
            "topic":"topicA",
            "partition":2,
            "replicas":[
                1003,
                1004,
                1005
            ]
        },
        ……
        {
            "topic":"topicA",
            "partition":19,
            "replicas":[
                1003,
                1004,
                1005
            ]
        }
    ]
}
5、执行重分配
/usr/hdp/current/kafka-broker/bin/kafka-reassign-partitions.sh --zookeeper zookeeper1.jdicity.local:2181 --reassignment-json-file reassign-plan.json --execute
6、查看结果
/usr/hdp/current/kafka-broker/bin/kafka-reassign-partitions.sh --zookeeper zookeeper1.jdicity.local:2181 --reassignment-json-file reassign-plan.json --verify

执行中:
进心中
已经完成:
全部完成
分区和副本数已经更改:
在这里插入图片描述

六、反思与规避

分区数增加后,未出现相同消费延迟的问题。

好记性不如赖笔头。
与君共勉。

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

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

相关文章

nodejs+vue+elementui线上买菜系统

本线上买菜系统主要包括三大功能模块,即管理员和用户。 (1)管理员模块:首页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理。 (2)前台:商品信息、公告信息、个人中心、…

java语言概述

目录 JDK和JRE的说明 Java语言的环境搭建 常用的DOS命令 第一个Java程序 创建java源文件 Hello.java 编译 步骤三:运行 总结 注 释(comment) JDK和JRE的说明 关系说明图 2、 概念说明 JDKJREJAVA开发工具(javac.exe java.exe、javaboc.exe&…

SpringIoc依赖查找-5

1. 依赖查找的今世前生: Spring IoC容器从Java标准中学到了什么? 单一类型依赖查找 JNDI - javax.naming.Context#lookup(javax.naming.Name) JavaBeans - java.beans.beancontext.BeanContext 集合类型依赖查找 java.beans.beancontext.BeanContext 集合查找方法 层…

基于android的移动学习平台(前端APP+后端Java和MySQL)

一、需求规格说明书 1.概述 1.1项目目的与目标, (1) 项目目的:设计并实现网络化的在线学习系统,对校内课程教学进行辅助,为学生和教师提供一个良好的互动平台,方便学生课后获取学习资源和进行交…

阿里云负载均衡SLB,HTTPS动态网站部署负载均衡,实现高并发流量分发

第一步购买服务器,测的话一般就用按量付费几毛钱一小时 我是用了三台,一台是常用的服务器,两台临时服务器进行部署项目 2:服务器购买完之后,开始安装项目运行环境,我是宝塔一键按键的,PHP7.1。…

新知实验室-基于腾讯云音视频TRTC的微信小程序实践

前言 腾讯会议是我们常用的一款线上会议软体,如果想要使用,我们需要下载软体使用,相比之下,基于腾讯云音视频的TRTC提供了一个很好的解决方案,我们通过接入到小程序中来实现快捷的开始会议,加入会议。 TR…

[Power Query] 删除错误/空值

数据导入后,有可能出现错误(Error)或者空值(null) ,我们需要对此进行删除。为此,本文通过讲解Power Query中的删除错误/空值操作,帮助大家的同时也便于日后自身的复盘学习 数据源 将数据源导入到Power BI Desktop,单击…

VSCode中Prettier插件依赖安装及冲突解决

文章目录一、Prettier插件安装1.1 安装Prettier插件1.2 添加Prettier配置文件1.3 配置格式化工具1.4 配置自动格式化1.5 与ESLint冲突解决二、Prettier依赖安装2.1 安装依赖2.2 配置2.3 配置指令2.4 其他配置和冲突解决一、Prettier插件安装 1.1 安装Prettier插件 通过VSCode…

[附源码]计算机毕业设计JAVA流浪动物救助系统

[附源码]计算机毕业设计JAVA流浪动物救助系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

【算法基础】(一)基础算法 --- 快速排序

✨个人主页:bit me ✨当前专栏:算法基础 🔥专栏简介:该专栏主要更新一些基础算法题,有参加蓝桥杯等算法题竞赛或者正在刷题的铁汁们可以关注一下,互相监督打卡学习 🌹 🌹 &#x1f3…

游戏品类加速回暖,文娱内容持续火热——2022年IAA行业品类发展洞察系列报告·第三期

易观分析:易观分析联合穿山甲与巨量算数共同构建IAA发展指数,通过行业规模、内容热度、商业变现的多维数据指标反映行业细分品类的发展情况,对领域季度运行情况、热门品类进行分析解读,助力开发者深入洞察领域特性和发展趋势&…

【American English】美语的连读规则

文章目录连读规则1. 辅音 元音2. 辅音 辅音情形1: 相同或相近的辅音相遇情形2: 辅音 h情形3: 爆破音 [l] / [m] / [n]情形4: 爆破音 [f] / [v]情形5: 爆破音 [tf]/[]3. 元音 元音情形1: 嘴唇变平时增加 [y] 音情形2: 嘴唇变圆时增加 [w] 音4. 特殊辅音 yRef连读规则 英…

open-set recognition(OSR)开集识别

开集识别 闭集识别 ​ 训练集中的类别和测试集中的类别是一致的,最常见的就是使用公开数据集进行训练,所有数据集中的图像的类别都是已知的,没有未知种类的图像。传统的机器学习的算法在这些任务上已经取得了比较好的效果。 (训…

简述供应商管理SRM系统

简道云SRM管理系统供应商关系管理(SRM系统),是企业可以用来对供应商的优势和能力进行系统的、全行业范围的评估,涉及企业整体的商业战略,供应商寻源、采购审批、比价、招投标管理、订单执行、库存可视化管理、财务支付审批对账、供应商绩效评…

java--并发

并发1.java的线程状态(1)sleep wait的区别和联系2.线程池的核心参数3.lock 和 synchronized4.volatile能否保证线程安全5.java中的悲观锁和乐观锁6.Hashtable和ConcurrentHashMap7.对ThreadLocal1.java的线程状态 new 新建:普通的类&#xf…

流媒体技术基础-流媒体服务与框架

一、开源流媒体服务器 38款 流媒体服务器开源软件 主流的开源流媒体服务器及框架如下: 1.Live555 [RTSP拉流] 一个为流媒体提供解决方案的跨平台的C开源项目,它实现了对标准流媒体传输协议如 RTP/RTCP、RTSP、SIP等的支持。 实现了对多种音视频编码格…

【毕业设计】机器学习的溢油特征提取与识别

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

城市内涝地埋式积水监测系统解决方案

一、方案背景 近 20 年来,我国城市化进程加快,城市地区由于人口密集,物资财产密度不断加大等特点,高强度暴雨积水形成的洪涝灾害对城市化地区产生的威肋和带来的狠失愈来愈大。由于城市的不断扩建,使工业区、商业区和居…

dos2unix和unix2dos

一 单次转换 用于转换Windows和UNIX的换行符&#xff0c;通常在windows系统中开发的源码文件&#xff0c;换行符是\r\n,二linux中的文件的换行符是\n。如果不转行可能会出错。在windows记事本写一个hello world源码. #include <stdio.h>int main(void) {printf("h…

Jmeter快速入门

Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具&#xff0c;用于对软件做压力测试。 JMeter 最初被设计用于 Web 应用测试&#xff0c;但后来扩展到了其他测试…