近日在做一个Golang的日志收集系统需要用到Kafka, 因苦于笔记本电脑虚拟机出了点问题, 所以在本文记录Windows10安装Kafka的过程
搭建过程
1.1 安装JDK
此处不多介绍
1.2 安装Zookeeper
下载地址:http://zookeeper.apache.org/releases.html#download
下载后解压到一个目录:
1.进入Zookeeper设置目录,我这里 E:\Study\zookeeper-3.4.14\conf
2. 将“zoo_sample.cfg”重命名为“zoo.cfg”
3. 在任意文本编辑器中打开zoo.cfg
4. 找到并编辑dataDir=dataDir=E:\\Study\\zookeeper-3.4.14\\tmp
5. 与Java中的做法类似,我们在系统环境变量中添加:
a. 在系统变量中添加ZOOKEEPER_HOME = E:\Study\zookeeper-3.4.14
b. 编辑path系统变量,添加为路径E:\Study\zookeeper-3.4.14\bin;
6. 在zoo.cfg文件中修改默认的Zookeeper端口(默认端口2181)
1.3 安装Kafka
下载地址:https://kafka.apache.org/downloads
注意:不要下载kafka-2.1.0-src
类似的src源码包,不然运行时报错:
命令语法不正确。
错误: 找不到或无法加载主类 kafka.Kafka
下载后解压到任意一个目录,我是log.dirs=E:\Study\kafka_2.11-2.1.0
1. 进入Kafka配置目录,log.dirs=E:\Study\kafka_2.11-2.1.0\config
2. 编辑文件“server.properties”
3. 找到并编辑log.dirs=E:\\Study\\kafka_2.11-2.1.0\\kafka-log,这里的目录自己修改成自己喜欢的
4. 找到并编辑zookeeper.connect=localhost:2181。表示本地运行
5. Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181
报错:
命令语法不正确。
错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_112\lib\dt.jar;C:\Program
解决方式如下:
在kafka安装目录中找到bin\windows目录中的kafka-run-class.bat找到为%CLASSPATH%加上双引号
修改前:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
修改后:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
确保在启动Kafka服务器前,Zookeeper实例已经准备好并开始运行。
1.4 创建生产者消费者实例
打开上面的Zookeeper和Kafka,不要关!1
2
3
4在Zookeeper目录
./zkServer.cmd
在kafka安装目录
.\bin\windows\kafka-server-start.bat .\config\server.properties
- 创建topic
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic haohan
创建一个名为haohan
的topic
不需要关闭此窗口 - 创建生产者
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic haohan
不要关闭窗口, 稍后会用到 创建消费者
.\bin\windows\kafka-console-consumer.bat --topic haohan --bootstrap-server localhost:9092
发送消息
在刚才的生产者窗口发送消息, 在消费者窗口打开查看
1.5 删除topic
方法一(配置delete.topic.enable=true)
修改kafaka配置文件server.properties, 添加delete.topic.enable=true,重启kafka,之后通过kafka命令行就可以直接删除topic
通过命令行删除topic:
.\bin\windows\kafka-topics.bat --delete --zookeeper {zookeeper server} --topic {topic name}
方法二(没有配置delete.topic.enable=true)
1、通过命令行删除topic:
.\bin\windows\kafka-topics.bat --delete --zookeeper {zookeeper server} --topic {topic name}
因为kafaka配置文件中server.properties没有配置delete.topic.enable=true,此时的删除并不是真正的删除,只是把topic标记为:marked for deletion
你可以通过命令:.\bin\windows\kafka-topics.bat --zookeeper {zookeeper server} --list 来查看所有topic
2、删除kafka存储目录(server.properties文件log.dirs配置)相关topic目录
3, 若想真正删除它,需要登录zookeeper客户端:
命令:./bin/zkCli.cmd
找到topic所在的目录:ls /brokers/topics
执行命令:rmr /brokers/topics/{topic name}即可,此时topic被彻底删除。