【大数据之Kafka】八、Kafka Broker之生产经验

news2025/1/9 1:10:07

1 节点服役和退役

1.1 服役新节点

新节点准备:
(1)关闭hadoop104,并右键执行克隆操作。
(2)开启hadoop105,并修改 IP 地址为105。

vim /etc/sysconfig/network-scripts/ifcfg/ens33

(3)在 hadoop105 上,修改主机名称为hadoop105。

vim /etc/hostname

(4)重新启动hadoop104、hadoop105。
(5)修改haodoop105 中 kafka 的 broker.id 为 3。
(6)删除hadoop105 中 kafka 下的 datas 和 logs。
(7)启动hadoop102、hadoop103、hadoop104 上的 kafka 集群。

zk.sh start
kf.sh start

(8)单独启动hadoop105 中的 kafka。

bin/kafka-server-start.sh -daemon ./config/server.properties

执行负载均衡操作:
(1)创建一个要均衡的主题。

vim topics-to-move.json
{
     "topics": [
          {"topic": "first"} 
          ],
    "version": 1
}

(2)生成一个负载均衡的计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2,3" --generate

在这里插入图片描述
(3)创建副本存储计划(所有副本存储在 broker0、broker1、broker2、broker3 中)。

vim increase-replication-factor.json

输入以下内容:
在这里插入图片描述
(4)执行副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --execute

在这里插入图片描述
(5)验证副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --verify

在这里插入图片描述

1.2 退役旧节点

执行负载均衡操作:先按照退役一台节点,生成执行计划,然后按照服役时操作流程执行负载均衡。
(1)创建一个要均衡的主题。

vim topics-to-move.json
{
     "topics": [
          {"topic": "first"} 
          ],
    "version": 1
}

(2)创建执行计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2" --generate

在这里插入图片描述
(3)创建副本存储计划(所有副本存储在 broker0、broker1、broker2 中)。

vim increase-replication-factor.json

输入以下内容:
在这里插入图片描述
(4)执行副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --verify

在这里插入图片描述
(5)验证副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --verify

在这里插入图片描述
执行停止命令:

[lyx@hadoop105 kafka]$ bin/kafka-server-stop.sh

2 手动调整分区副本存储

  在生产环境中,每台服务器的配置和性能不一致,但是Kafka只会根据自己的代码规则创建对应的分区副本,就会导致个别服务器存储压力较大。所有需要手动调整分区副本的存储。
需求:
  创建一个新的topic,4个分区,两个副本,名称为third。将该topic的所有副本都存储到broker0和broker1两台服务器上。
在这里插入图片描述
步骤:
(1)创建一个新的topic,为third。

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --create --partitions 4 --replication-factor 2 --topic third

(2)查看分区副本存储情况。

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic third

在这里插入图片描述
(3)创建副本存储计划(所有副本都指定存储在broker0、broker1)。

vim increase-replication-factor.json

#输入以下内容
{
    "version":1,
    "partitions":[{"topic":"third","partition":0,"replicas":[0,1]},
            {"topic":"third","partition":1,"replicas":[0,1]},
            {"topic":"third","partition":2,"replicas":[1,0]},
            {"topic":"third","partition":3,"replicas":[1,0]}]
}

(4)执行副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --execute

(5)验证副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --verify

(6)查看分区副本存储情况。

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic third

在这里插入图片描述

3 Leader Partition负载平衡

  正常情况下,Kafka本身会自动把Leader Partition均匀分散在各个机器上,来保证每台机器的读写吞吐量都是均匀的。但是如果某些broker宕机,会导致Leader Partition过于集中在其他少部分几台broker上,这会导致少数几台broker的读写请求压力过高,其他宕机的 broker重启之后都是follower partition,读写请求很低,造成集群负载不均衡。

解决方法:
在这里插入图片描述
例如:
在这里插入图片描述
  对于broker0节点,分区2的AR优先副本是0节点,但0节点不是Leader节点,所以不平衡数+1,AR副本总数为4,所以broker0节点不平衡率为1/4>10%,需要平衡。
  对于broker2节点,分区3的AR优先副本是2节点,但2节点不是Leader节点,所以不平衡数+1,AR副本总数为4,所以broker2节点不平衡率为1/4>10%,需要平衡。
  对于broker3节点,分区0的AR优先副本是3节点,但3节点不是Leader节点,所以不平衡数+1,AR副本总数为4,所以broker3节点不平衡率为1/4>10%,需要平衡。
  对于broker1节点,分区1的AR优先副本是1节点,且1节点是Leader节点,所以不平衡数为0,broker1节点不平衡率为0,不需要平衡。
PS:不要频繁触发负载平衡操作,因为会浪费大量进程资源。

4 增加副本因子

  在生产环境当中,由于某个主题的重要等级需要提升,我们考虑增加副本。副本数的增加需要先制定计划,然后根据计划执行。
(1)创建topic

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --create --partitions 3 --replication-factor 1 --topic fourth

在这里插入图片描述
(2)手动增加副本存储,创建副本存储计划(所有副本都指定存储在 broker0、broker1、broker2 中)。

vim increase-replication-factor.json

#输入以下内容
{
    "version":1,
    "partitions":[{"topic":"fourth","partition":0,"replicas":[0,1,2]},
            {"topic":"fourth","partition":1,"replicas":[0,1,2]},
            {"topic":"fourth","partition":2,"replicas":[0,1,2]}]
}

(3)执行副本计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --reassignment-json-file increase-replication-factor.json --execute

在这里插入图片描述

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

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

相关文章

Edge官方鼠标手势

前言 日期:2023年8月 Edge浏览器目前已自带官方的鼠标手势功能,若要使用首先将浏览器更新至最新版,下文介绍使用方法。 官方鼠标手势 前提 更新Edge至最新版,并关闭其它鼠标手势扩展。 开启鼠标手势 打开Edge浏览器的设置&…

Linux c++开发-04-让Hello World更像一个工程

外层CMakeLists.txt src中的CMakeLists.txt ADD_EXECUTABLE(hello main.cpp)main.cpp 然后 cd build cmake … make ./bin/hello

TCPIP协议学习

TCP协议 连接导向:TCP是一种面向连接的协议,这意味着通信的两端在建立通信之前必须通过握手过程建立连接。握手过程包括三次握手,其中客户端向服务器发送连接请求,服务器回复确认,最后客户端再次确认连接。这样建立的连…

基于springboot+vue的校园失物招领系统-前后端分离(内含文档+源码+教程)

近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定校园失物招领网站的总体功能模块。然后,详细…

InstructPix2Pix(CVPR2023)-图像编辑论文解读

文章目录 1.摘要2.背景3.算法3.1 生成多模态训练集3.1.1生成指令及成对caption3.1.2 依据成对的caption生成成对的图像 3.2 InstructPix2Pix 4.实验结果4.1基线比较4.2消融实验 5.结论 论文: 《InstructPix2Pix: Learning to Follow Image Editing Instructions》 …

什么是系统集成项目管理工程师,证书难考吗?

系统集成项目管理工程师,属于软考三个级别中的 “中级”,相当于中级职称。 系统集成项目管理程师是工信部和人社部举办的软考中新增开的一门考试。软考全称全国计算机技术与 软件专业技术资格(水平)考试,这门新开的系…

Nacos配置文件更新+热更新+多环境配置共享+集群搭建

对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…

0-5V转4-20mA电路

本设计采用运放与三极管做二线制恒流源电路 分析: Va2*V- (1) (2) (3) 联立(2)(3)得: (5) 由于 (6) …

【AIGC专题】Stable Diffusion 从入门到企业级实战0403

一、前言 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节, 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。本部分内容,位于整个Stable Diffusion生态…

剑指offer(C++)-JZ61:扑克牌顺子(算法-模拟)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。 有如…

MyBatisPlus 基础Mapperr接口:增删改查

MyBatisPlus 基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(user);}日志 数…

postman token 请求头添加

思路: 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

Java8中List转Map报错“java.lang.IllegalStateException: Duplicate key”

排查思路 从报错的关键字中可以大致判断是是key冲突,Duplicate key在数据库的主键冲突错误中经常遇到,个人的思维惯性就联想到了数据库,从这个方向去排查,无果。抓耳挠腮之下,分析如下错误信息 java.lang.IllegalStateException: Duplicate key image(…

java八股文面试[数据库]——索引哪些情况下会失效

查询条件包含 or,会导致索引失效。 隐式类型转换,会导致索引失效,例如 id字段类型是varchar,我们 where id 1,这样就会触发隐式类型转换 like 通配符会导致索引失效,注意:”ABC%” 不会失效,…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升,到发稿,捷荣技能涨停斩获6连板,华映科技亦涨停收成3连板,华力创通大涨超19%,蓝箭电子涨约11%,力源信息涨超4%。 捷荣技能盘中再度涨停,近7日已累计大涨超90%。公司…

如何成为一个高效的电商数据分析师

如何成为一个高效的电商数据分析师 文章目录 如何成为一个高效的电商数据分析师前言市场洞察平台品类品牌淘天京东抖音 商品 总结 前言 电商数据分析师 在我看来这个角色的定义其实很宽泛,现在从事电商这门生意的人都可以是,而且应该是一名电商数据分析师…

[BSidesCF 2019]Kookie 1 , cookie伪造

给了一个用户和密码 用户名:cookie 密码:monster 登录后查看cookie 发现就是用户名维持登录 那么修改用户名为 admin 得到flag

原型-设计模式

原型设计模式 原型模式应用场景:创建一个对象比较复杂,当前存在一个和需要创建的对象极其相似,我们就可以采用原型模式,在原来的对象上进行一个修改。 修改方案:在原来的基础上进行拷贝,在进行部分的修改。…

Pytest系列-快速入门和基础讲解(1)

前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架 单元测试框架介绍 单元测试…

【Arduino24】8*8点阵实验

硬件准备 8*8点阵:1个 旋钮电位器:1个 面包板:1块 杜邦线:若干 硬件连线 软件程序 //定义引脚 #define xKnob_pin A0 //x轴旋钮的引脚 #define yKnob_pin A1 //y轴旋钮的引脚 const int row_pin[8] { 6, 11, 10, 3, 17, 4…