(二十九)大数据实战——kafka集群节点服役与退役案例实战

2023-09-14 23:51:07

前言

本节内容是关于kafka集群节点的服役与退役,从而实现kafka集群的缩容与扩容。在开始本节内容之前,我们要预先安装好kafka集群,并准备一台空余的服务器用来完成我们扩容与缩容的案例。关于kafka集群的安装内容这里不在赘述,相关内容请查看作者往期博客内容。

正文

  • 从hadoop103克隆一台空闲服务器hadoop104

- 克隆服务器hadoop104

- 修改服务器IP地址

- 修改服务器主机名称

- 重启hadoop104服务器

  • 在hadoop101启动zookeeper集群和kafka集群

 - 启动zookeeper集群

- 启动kafka集群

  • 修改hadoop104中kafka配置文件server.properties中的broker.id=3

  • 删除hadoop104中kafka安装目录中的data和logs目录

  • kafka集群服役新节点

-  启动hadoop104服务器上的kafka服务

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

- 查看主题是否有hadoop104服务节点使用,结果是没有

- 执行负载均衡操作,将first主题数据均衡到hadoop104节点

        ① 在kafka安装目录先创建一个topics-to-move.json文件,如果要均衡多个主题就将多个主题都放入该json文件中

        

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

        ② 生成一个负载均衡的计划

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

        ③ 创建副本存储计划increase-replication-factor.json

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

        ④执行副本存储计划

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

        ⑤验证副本存储计划

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

        ⑥查看first主题均衡后的数据存储分布,可以看到hadoop104的节点3也参与了主题数据的存储

  •  kafka集群退役旧节点

①同上生成一个负载均衡计划,注意该计划将要退役的节点3去掉

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

②创建副本存储计划decrease-replication-factor.json

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

③执行副本存储计划

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop101:9092 --reassignment-json-file decrease-replication-factor.json --execute

④验证副本存储计划

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop101:9092 --reassignment-json-file decrease-replication-factor.json --verify

⑤查看first主题节点详情,,可以看到节点3已退役完成

bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic first

结语

关于kafka集群节点服役与退役案例实战的内容到这里就结束了,我们下期见。。。。。。

更多推荐

03使用Spring基于XML的方式注册第一个组件

基于XML的方式注册第一个组件开发步骤第一步:创建Maven工程配置生成的pom.xml文件,添加springcontext基础依赖和junit依赖(注意根据Spring官方文档描述,Spring6需要JDK版本17)当添加Spring的基础依赖springcontext之后,Maven会自动关联并引入其他依赖spri

M2 MacbookPro配置Spark源码运行环境

零、版本信息MacBook:MacBookProM2JDK:1.8.0_381Scala:2.12.15Maven:3.6.3Homebrew:4.1.12(可选,下载Git需要)Git:2.42.0(下载Spark源码需要)Spark:3.2.5整体配置流程参考@来自遥远的水星【Spark源码01【搭建Spark源码

用什么命令看Linux系统的体系架构

要查看Linux系统的体系架构,可以使用uname命令。在终端中运行以下命令:uname-m该命令将返回系统的体系架构,例如x86_64表示64位系统,i686表示32位系统。uname使用方法uname命令用于获取操作系统的相关信息。它可以用于显示操作系统的名称、内核版本、主机名、硬件架构等信息。以下是uname命令

uniapp cors错误

CORS(跨源资源共享)错误通常出现在前端应用程序尝试从不同源(域)请求数据时。这些错误是出于安全考虑而存在的,以防止潜在的恶意攻击。如果你在UniApp中遇到CORS错误,可以尝试以下解决方法:检查服务器端设置:首先,请确保服务器端允许跨域请求。服务器应该在响应头中包含适当的CORS标头,允许来自UniApp应用程序

广州某机械制造企业生产工序管理系统解决方案

RFID工序管理解决方案在生产工序中引入RFID技术,对生产工序的构件拼装、焊接、打磨后检测、打砂油漆后检测、构件拟装读取确认、项目管理人员收货确认等各个生产环节的数据进行自动化的数据采集,保证生产管理各个作业环节数据输入的效率和准确性,确保企业及时准确地掌握项目生产的真实数据,合理控制各个项目的顺利进展。根据企业对I

MySQL中如何识别低效的索引

我是一个目录前言(可以跳过直接看正文)索引的基本原理索引设计的原则创建索引的原则正文使用索引查询一定能提高查询的性能吗?怎样查看索引是否有高选择性?用一条SQL查看低效的索引前言(可以跳过直接看正文)索引的基本原理索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。索引的原理很简单,就是

Mysql表的约束

目录一、NULL约束二、default约束三、comment四、zerofill五、primarykey六、auto_increment七、唯一键八、外键为了保证数据的完整性和可预期性,表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。表的约束很多,这里主要介绍以下几个约束:null/notn

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识,这将会进一步的影响软件测试活动的开展,并且阻碍软件测试质量的提高。下面简单列举了几种有代表性的对软件测试的认识

typeof的作用

typeof是JavaScript中的一种运算符,用于获取给定值的数据类型。它的作用是返回一个字符串,表示目标值的数据类型。通过使用typeof运算符,我们可以在运行时确定一个值的类型,从而进行相应的处理或逻辑判断。常见的数据类型包括:"undefined":未定义的值"boolean":布尔值"number":数字"

Java的checked exception有意义吗?

1前言这种异常必须在编译前就try/catch,又不一定会抛异常,小项目中不明显,大项目中,会造成不必要代码臃肿和可读性降低,完全可在编译出错时,通过单元测试和调试,得到正确代码。这设计还有啥意义?CheckedException初衷很好,但事实上是没啥卵用设计。2初衷很好因为我们都知软件会有各种问题,严谨处理这些问题

【JavaScript精通之道】掌握数据遍历:解锁现代化遍历方法,提升开发效率!

​🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!​目录📚前言📘1.reduce方法📘2.forEach方法📘3.map方法📘4.for循环📘5.filter方法📘6.for...of循环📘7.Object.keys方法📘8.Object.va

热文推荐