kafka 重新分配partition和调整replica的数量

一、重新分配partition

1、环境准备

kafka 版本:2.13-3.6.1
topic 名字: topic-A
partition 数量: 3
relica 数量:2
broker数量:2 ;broker.id分别是0,1

topic-B 详细信息展示:

Topic:topic-B      Partition: 0       Leader: 0          Replicas: 0,1      Isr:   0,1
Topic:topic-B      Partition: 1       Leader: 1          Replicas: 1,0      Isr:   1,0
Topic:topic-B      Partition: 2       Leader: 0          Replicas: 0,1      Isr:   0,1

当需要提高系统的可扩展性,提升集群的速率和吞吐量的时候,需要增加机器的数量,当机器数量增加的时候,原本因节点不足导致partition的leader节点分布不均衡的缺陷可以得到解决,这个时候可以使用kafka-reassign-partitions.sh命令来对分区进行重新分配。

注意: Kafka 不会对已存在的分区进行均衡分配,所以需要我们手动通过kafka-reassign-partitions.sh命令执行分区分配操作。

2、具体实现

当前集群中有两个节点,id分别为0和1;现在再加一个 broker 节点,id 为 2;现在我们手动将已存在的topic-B的三个分区的leader节点均匀分布在三个节点上,以便实现尽可能的负载均衡,提高写入和消费速度。

  • 声明要重新分配分区的 topic 列表
    可以使用kafka-reassign-partitions.sh命令来对topic的分区进行重新分配,但前提是,我们需要先按照要求定义一个json文件,里面说明哪些 topic 需要分配分区。文件内容如下:
cat<<EOF > topic-B-generate.json
{"topics": [{"topic": "topic-B"}],"version": 1
}
EOF
  • 通过 --topics-to-move-json-file 参数,生成重新分区分配策略 --generate
./bin/kafka-reassign-partitions.sh --bootstrap-server ip1:port1,ip2:port2,ip3:port3 --topics-to-move-json-file topic-B-generate.json --broker-list "0,1,2" --generate

其中–broker-list:值为要分配的 kafka broker id,以逗号分隔,该参数必不可少。脚本会根据你的 topic-generate.json 文件,获取 topic 列表,为这些 topic 生成分布在 broker list 上面的分区分配策略。输出结果中有你当前的分区分配策略,也有 Kafka 期望的分配策略,在期望的分区分配策略里,kafka 已经尽可能的为你分配均衡。

Current partition replica assignment 当前的分区分配策略,可以用于备份以及之后的恢复
Proposed partition reassignment configuration kafka生成的一个分配均衡的分配策略,可以用于后续重新分配的执行
一个分配策略示例如下

{"version":1,"partitions":[{"topic":"topic-B","partition":0,"replicas":[0,1] ,"log_dirs":["any","any"]},{"topic":"topic-B","partition":1,"replicas":[1,0] ,"log_dirs":["any","any"]},{"topic":"topic-B","partition":2,"replicas":[0,1] ,"log_dirs":["any","any"]}]}
  • 通过 --reassignment-json-file 参数,执行分区分配策略 --execute
    将上述输出的Proposed partition reassignment configuration中的策略复制到一个json文件中,并命名,然后执行
./bin/kafka-reassign-partitions.sh --bootstrap-server ip1:port1,ip2:port2,ip3:port3  --reassignment-json-file partition-replica-reassignment.json --execute
  • 通过 --reassignment-json-file 参数,检查分区分配进度 --verify
./bin/kafka-reassign-partitions.sh --bootstrap-server ip1:port1,ip2:port2,ip3:port3  --reassignment-json-file partition-replica-reassignment.json --verify

二、调整replica的数量

一般情况下,分区的副本replica数量与节点数量一致,当集群中节点数量增加的时候,一般也需要调整replica的数量,一般是会增大分区副本数,调整方法如下:

{"version":1,"partitions":[{"topic":"topic-B","partition":0,"replicas":[0,1,2] ,"log_dirs":["any","any"]},{"topic":"topic-B","partition":1,"replicas":[1,0,2] ,"log_dirs":["any","any"]},{"topic":"topic-B","partition":2,"replicas":[2,1,0] ,"log_dirs":["any","any"]}]}

其中replicas中存放的是副本所要在的节点,可以通过 调整其数值和顺序来调整replica的数量和leader所在的节点(第一个就是leader所在节点),调整完成之后再进行执行。

注意: replicas中的值列表是broker id,log_dirs中的列表数量需要与replicas列表数量一致;
注意: 每个 partitiion 的所有 replicas 叫做 “assigned replicas” ,“assigned replicas” 中的第一个 replica 叫 “leader”,第二个叫"preferred replica",当 kafka leader replica 挂掉的话,partition 会选择 “preferred replica” 做为 leader replica 。

三、小结

  • 1、–generate:配合着 --topics-to-move-json-file 可以生成分区分配策略,该参数适用于分区多的情况。
  • 2、–execute:配合着 --reassignment-json-file 可以执行分区分配策略。
  • 3、–verify:配合着 --reassignment-json-file 可以检查分区分配进度。

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

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

相关文章

初探前端世界:网页基本结构入门指南

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和<CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f451;认识前端和网页&#x1f353;1 什么是网页&#x1f353;2 …

部署redis集群哨兵模式

部署redis集群哨兵模式 前言主要功能工作机制 一、虚拟机部署1、安装2、改配置1、redis.conf2、sentinel.conf3、起服务4、停redis-server服务&#xff0c;验证sentinel 3、脚本1. sentinel notification-script2. sentinel reconfig-script3. sentinel client-reconfig-script…

3个让你爽到爆炸的学习工具

We OCR WeOCR 是一个基于浏览器的文字识别工具&#xff0c;用户可以通过上传图片来识别其中的文本信息。它是一个渐进式网络应用程序&#xff08;PWA&#xff09;&#xff0c;可以在浏览器中离线使用。WeOCR 是开源的&#xff0c;并且基于 Tesseract OCR 引擎开发。用户无需在本…

软件研发标准化流程文件

为了规范化系统开发流程&#xff0c;我们精心制定了一套详尽的规范文档。该文档旨在通过标准化、系统化的方法来显著提升开发效率与项目质量。流程始于明确需求阶段&#xff0c;通过深入细致的设计规划来确保解决方案既可行又具有前瞻性。随后&#xff0c;我们进入高效的编码实…

INFINI Console 使用介绍

上次在《INFINI Easysearch尝鲜Hands on》中我们部署了两个节点的Easysearch&#xff0c;并且也设置了Console对集群进行监控。那么今天我们再来介绍下INFINI Console的使用。 INFINI Console 仪表盘功能介绍 INFINI Console 是一个功能强大的数据管理和分析平台&#xff0c;…

图像练习-识别中圆形锡点 (04)

图片 代码 cv::Mat src cv::imread("light_point.png", cv::IMREAD_COLOR);cv::Mat draw src.clone();cv::Rect rt0(20, 80, src.cols - 30, 190);cv::Rect rt1(20, 480, src.cols - 30, 190);cv::Mat gray;cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);cv::Mat …

AGI系列(7)Reflection 在 AI agent 中的应用实例

斯坦福大学教授吴恩达一直非常推崇AI Agent,之前他提出过AI Agent的四种工作模式,分别是Reflection(反思)、Tool use(工具使用)、Planning(规划)和Multi-agent collaboration(多智能体协同)。 近日,他又开源了一个翻译 AI Agent, 他认为 AI 智能体机器翻译对改进传…

java项目自定义打印日志,打印请求方式,参数用时等

1.相关依赖 <!-- 私人工具包 --><dependency><groupId>cn.changeforyou</groupId><artifactId>location</artifactId><version>1.13-SNAPSHOT</version></dependency><!-- hutool工具依赖 --><dependency>…

【深入理解】元组tuple的底层实现(与C++进行对比)

Python虽然没有指针类型&#xff0c;但是处处离不开指针&#xff0c;我们要认识到一点&#xff0c;只要操作系统是用C语言写的&#xff0c;就一定会使用到指针&#xff0c;因为使用某种语言&#xff0c;我们一定会定义变量&#xff0c;就必须申请进程的地址空间&#xff0c;也就…

内容评分越高,谷歌排名就越靠前吗?

我研究并分析了目前流行的四个内容优化工具的内容评分和Google排名之间的关联性&#xff1a;Clearscope、 Surfer、 MarketMuse 和 Frase&#xff0c;结果显示关联性普遍不高。 虽然相关性并不一定意味着绝对的因果关系&#xff0c;但也表明&#xff0c;一味的追求内容得分并不…

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理 目录 AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理 一、简单介绍 二、Transformer 三、解码器 四、认识Transformer 1、Transf…

某DingTalk企典 - Token

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识&#xff0c;欢迎私信共享学习心得。 如有侵权&#xff0c;联系博主删除。 请勿商用&#xff0c;否则后果自负。 网址 aHR0cHM6Ly9kaW5ndGFsay5jb20vcWlkaWFuLw 浅聊一下 没毛病&#xff0c;就这字段&#xff0c;有效期…

将QT移植到IMX6ULL开发板

文章目录 前言一、编译系统1.设置交叉编译工具链2.编译系统3.烧写 二、Linux中下载QT1.安装 Qtcreator2.创建第一个程序3.配置 QtCreator 开发环境&#xff08;1&#xff09;打开选项界面&#xff08;2&#xff09;选择编译器&#xff08;3&#xff09;设置编译器&#xff08;4…

电脑回收站删除的文件怎么恢复?5个恢复方法详解汇总!

电脑回收站删除的文件怎么恢复&#xff1f;在我们日常使用电脑的过程中&#xff0c;难免会遇到误删文件的情况。一旦发现自己误删文件了&#xff0c;先不要着急&#xff0c;还是有很多方法可以找回的。市面上还是有很多好用的文件恢复软件可以使用&#xff0c;具体介绍如下。 本…

学习伦敦金技术分析的具体步骤是什么?

技术分析是我们分析伦敦金市场的重要工具&#xff0c;刚入市就面对时涨时跌的市场应该如何交易呢&#xff1f;投资者如果不掌握技术分析的方法&#xff0c;恐怕对这个问题会没有头绪。入场都没有&#xff0c;盈利就更加无从谈起了。而学习技术分析&#xff0c;是有不同的阶段、…

Linux之文本三剑客

Linux之三剑客 Linux的三个命令,主要是用来处理文本,grep,sed,awk,处理日志的时候使用的非常多 1 grep 对文本的内容进行查找 1) 基础用法 语法 grep 选项 内容|正则表达式 文件选项: -i 不区分大小写 -v 排除,反选 -n 显示行号 -c 统计个数查看文件里包含有的内容 [roo…

PE文件学习

一、介绍 PE文件&#xff0c;即Portable Executable文件&#xff0c;是一种标准的文件格式&#xff0c;主要用于微软的Windows操作系统上。这种格式被用来创建可执行程序&#xff08;如.exe文件&#xff09;、动态链接库&#xff08;.DLL文件&#xff09;、设备驱动&#xff0…

每日一练:攻防世界:Hidden-Message

追踪UDP数据流&#xff0c;没有任何隐藏信息&#xff1a; WP&#xff1a; 观察流量包 每个流的唯一的区别就是UDP的源地址srcport的最后一位在变化 都提取出来就是二进制序列 用tshark提取一下 //使用tshark过滤出源端口&#xff0c;使用cut裁取端口的最后一位 tshark -r 8…

金融(基金)行业信创国产化特点及统一身份认证解决方案

金融业在政策支持及自主驱动下&#xff0c;金融信创取得快速发展。从2020年开始&#xff0c;三期试点已扩容至5000余家&#xff0c;进入全面推广阶段。而基金行业信创建设与银行、证券、保险这些试点行业相比&#xff0c;进展较为缓慢。 基金行业信创当前面临的问题 与多家基…

开源的基于图像识别本地实名认证系统(本项目不借助任何api) v1.0

前言: 本项目主要是代替昂贵的实名认证服务api或者sdk&#xff0c;目前仍然存在很多缺点 一、具体介绍 1.组成: 人脸识别服务器分为两部分: (1)、http服务端 server.py共有四个函数: DrawFaceinIdCard:用户上传身份证图片后&#xff0c;服务端会对身份证进行抠人像和ocr处理…