Kafka安装教程及遇到的坑

一. windows环境

由于kafka运行需要依赖JDK和zookeeper环境,因此需要先安装JDK和zookeeper。
JDK环境
JDK环境安装比较简单,不做过多赘述
zookeeper环境
(1)单独安装zookeeper环境,可参考另一篇博客(zookeeper安装教程)
(2)使用kafka最新版本内部自带的zookeeper

1. 下载kafka安装包

下载地址 注意要下载二进制版本,如下图

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper


下载后如下图示tar.gz压缩文件

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_02

2. 修改配置文件

直接解压,进入config目录,编辑server.properties,

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_kafka_03


kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_04

2.1 设置kafka监听端口

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_中间件_05

2.2 设置log路径

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_06

2.3 设置zookeeper连接配置,可自定义

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_kafka_07

3. 启动kafka

两种方式:

3.1 启动非内置zookeeper,然后启动kafka

启动方法详见另一篇博客(zookeeper安装教程)

3.2 启动内置zookeeper,然后启动kafka

注意

3.2.1 修改内置zookeeper配置文件(zookeeper.properties)

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_08

3.2.2 运行内置zookeeper

注意:此处需要修改kafka安装包解压后的文件夹名称,否则不能运行。

进入kafka根目录

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_09


执行下面命令:

bin\windows\zookeeper-server-start.bat config\zookeeper.properties

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_10


kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_kafka_11


kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_12

3.2.3 运行kafka
.\bin\windows\kafka-server-start.bat .\config\server.properties

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_中间件_13


运行成功

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_14

二. kafka简单使用

1. 创建主题topic

进入kafka安装目录, 运行命令:

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

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_15

2. 查看已创建的主题

进入kafka安装目录, 运行命令:

bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_16

3. 创建生产者

进入kafka安装目录, 运行命令,启动生产者:

bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test-topic

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_17


输入要发送的消息

4. 创建消费者

进入kafka安装目录, 运行命令,启动消费者:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --from-beginning

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_18


此处,输入中文会乱码,暂时还没找到解决办法,带后续补充。。。

三. 遇到的坑

问题1:运行kafka集成的zookeeper时,命令:bin\windows\zookeeper-server-start.bat config\zookeeper.properties,出现报错:命令语法不正确。

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_中间件_19


原因:

直接解压后的文件夹名称为:kafka_2.13-3.1.0,将文件夹名称改为其他名称即可正常运行,如图

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_20


修改后,正常启动

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_zookeeper_21

问题2:运行kafka创建topic时,出现报错:Exception in thread “main” joptsimple.UnrecognizedOptionException: zookeeper is not a recognized option。

原因:kafka最新版本创建主题topic方式已经改变,如果仍然按照以前的方式创建,就会出现该错误,例如使用如下命令:

bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-topic

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_22


使用最新的命令即可解决:

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

kafka没有配置zookeeper的ACL账号密码 kafka连不上zookeeper_bootstrap_23