windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper

1.下载

https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz

2.配置使用 KRaft 模式

2.1 修改 Kafka 的配置文件

cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft

修改 server.properties

# 设置 Kafka 数据日志存储目录
log.dirs=D:\\data\\bigdata\\kafka_2.12-3.9.0\\data

2.2 生成数据目录ID:

cd D:\data\bigdata\kafka_2.12-3.9.0\bin\windows

.\kafka-storage random-uuid

报错

D:\data\bigdata\kafka_2.12-3.9.0\bin\windows>.\kafka-storage random-uuid
输入行太长。
命令语法不正确。

解决办法
修改 kafka-run-class.bat

注释93 ~ 95 行,这三行的作用是拼接 classpath
注释174 ~ 177 行,这四行的作用是判断 classpath 是否定义,如果未定义则退出。因为要直接指定目录了,所以不需要 classpath 了。
修改179行,将%CLASSPATH%替换成%BASE_DIR%\libs\*

在这里插入图片描述

再次执行

D:\data\bigdata\kafka_2.12-3.9.0\bin\windows>.\kafka-storage random-uuid
cM-TcxmfSBSaic6aa8Wxvg

命令格式化数据目录,–cluster-id (上一步的数据目录ID)

.\kafka-storage.bat format --config ../../config/kraft/server.properties --cluster-id  cM-TcxmfSBSaic6aa8Wxvg

D:\data\bigdata\kafka_2.12-3.9.0\bin\windows>.\kafka-storage.bat format --config …/…/config/kraft/server.properties --cluster-id cM-TcxmfSBSaic6aa8Wxvg
Formatting metadata directory D:\data\bigdata\kafka_2.12-3.9.0\data with metadata.version 3.9-IV0.

3.启动

.\kafka-server-start.bat ../../config/kraft/server.properties

4. 验证

 .\kafka-topics --bootstrap-server localhost:9092 --list

如果配置和启动正确,能看到一个空的主题列表(因为没有创建任何主题)。

5. 创建一个测试主题

.\kafka-topics.bat --bootstrap-server localhost:9092 --create --topic test --partitions 1 --replication-factor 1

6. 生产和消费消息

测试生产和消费消息来验证 Kafka 是否工作正常:

生产消息:

.\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test

在这里插入图片描述
消费消息:
在这里插入图片描述

.\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
### Kafka 集群部署方案:使用 ZooKeeper 的替代方案 自 Apache Kafka 2.8 版本起,引入了 KRaft (Kafka Raft Metadata)[^1]模式作为元数据管理的新机制,从而允许 Kafka 依赖于外部的 ZooKeeper 实例来管理和协调集群中的元数据。 #### 启用 KRaft 模式的配置方法 为了启用 KRaft 模式,在启动 Kafka Broker 前需修改 `server.properties` 文件并设置如下参数: ```properties process.roles=broker,controller node.id=<unique_node_id> listeners=PLAINTEXT://<host>:9092 controller.quorum.voters=<comma_separated_list_of_controller_nodes> ``` 其中 `<unique_node_id>` 是每个节点唯一的标识符;而 `<comma_separated_list_of_controller_nodes>` 则指定了参与选举控制器的角色列表,格式为 `id@hostname:port,id@hostname:port,...`. 对于已有的基于 ZooKeeperKafka 安装环境来说,如果想要迁移到 KRaft 模式,则需要先备份现有数据,并按照官方文档指导完成迁移过程. #### 运行脚本调整 当采用 KRaft 方式时,再通过 ZooKeeper 来创建或删除主题。此时应直接调用 Kafka 自带工具命令来进行这些操作: ```bash bin/kafka-topics.sh --create --topic my_topic_name \ --partitions 3 --replication-factor 2 \ --bootstrap-server localhost:9092 ``` 同样地,查看、描述以及删除 Topic 可以分别执行对应的子命令选项[--bootstrap-server 参数指定目标服务器地址][^2]: ```bash # 查看所有 topic bin/kafka-topics.sh --list --bootstrap-server localhost:9092 # 描述特定 topic bin/kafka-topics.sh --describe --topic my_topic_name --bootstrap-server localhost:9092 # 删除 topic bin/kafka-topics.sh --delete --topic my_topic_name --bootstrap-server localhost:9092 ``` 以上展示了如何在需要 ZooKeeper 支持的情况下构建和维护一个完整的 Kafka 生产者/消费者消息传递平台。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值