Windows系统下kafka环境搭建与"java.lang.OutOfMemoryError: Map failed"的异常处理
一、依赖环境准备
1、检查JDK是否存在且和JVM版本一致,我这里系统是64位,JVM也是64位
2、如果出现以下报错则是JVM不一致
二、安装kafka
1、下载最新版本kafka
kafka官方下载路径: https://kafka.apache.org/downloads.html
我们下载官方推荐的最新版本kafka 3.2.1, Scala 2.13
2、解压到本地,如下图所示
3、分别修改zookpeer和kafka的配置文件 config\zookeeper.properties、config\server.properties
4、根据自己习惯修改zookeeper的data路径到指定位置(不修改也可以,不会影响使用),单机版其他无需修改
5、修改kafka配置文件,advertised.listeners注释打开,并在PLAINTEXT://后加上域名或IP,我这里本机就用localhost了
三、启动zookeeper和kafka
1、启动zoopeeper单机
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
zookeeper-server-start.bat ..\..\config\zookeeper.properties
如下图执行此命令,如无报错,则启动成功
2、启动kafka单机
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
kafka-server-start.bat ..\..\config\server.properties
3、创建topic
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
kafka-topics.bat --create --topic kafka_topic1 --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 # 可以通过配置使kafka自动创建topic,但生产环境不会这样使用,这里就不作讲解 # kafka-topics.bat 操作topic的脚本 # --create 代表本次操作动作是创建 kafka_topic1 定义的topic名称 # --bootstrap-server 代表kafka的broker地址,多个地址用逗号隔开,这里是单机且本机,使用localhost:9092 # --partitions 1 代表为名称是kafka_topic1的topic创建一个分区 # --replication-factor 1 代表为已创建的分区创建一个备份分区
查看topic命令
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
#查看指定topic的命令 kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic kafka_topic1 #查看topic清单 kafka-topics.bat --list --bootstrap-server localhost:9092
四、用命令发布消息和消费消息
1、用命令发布消息
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
# 创建producer kafka-console-producer.bat --bootstrap-server localhost:9092 --topic kafka_topic1
运行producer,并发布hello消息
2、用命令消费消息
打开DOS窗口切换路径到 \kafka_2.13-3.2.1\bin\windows下,执行以下命令
# 创建consumer kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic kafka_topic1 --from-beginning # --from-beginning 代表从头开始消费
这里消费到了前面发布的“hello”的消息
到这里就结束了,可以尽情的去发布消息和消费消息了
注意:
kafka启动或者消费消息是报 "java.lang.OutOfMemoryError: Map failed",优先检测系统位数和JVM位数是否一致,见第一步准备环境