- 近期在搞kafka,在Windows环境搭建的过程中遇到一些问题,把具体的流程几下来防止后面忘了。
- 准备工作:
http://kafka.apache.org/downloads
解压文件提取出里面的文件
在cmd命令行打开至根目录下,内容如下:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/9d880ee0aa00d9b6be809b28a045f06d.png)
(1).bin目录下存放的是程序运行时使用的脚本文件,window平台是一个独立的文件夹里面存放着 .bat 文件,bin的目录下存放的是 Linux 平台使用的 .sh 的shell脚本,在window平台上用不到,嫌麻烦可以删了。
(2).config目录下存放的是一些程序运行的配置文件,在后期自定义使用kafka的时候需要修改里面的文件内容。
(3).libs目录是打包好的jar包,这个版本自带了zookeeper的jar包,所以在安装的过程中不需要再在本地安装zookeeper了。
- 在正常启动zoopkeeper之前需要修改zookeeper.properties的文件内容,将其data的输出目录指定一下,可自行创建一个文件夹如下:
然后启动:
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
- 正常启动后他的状态是这样的:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/814e05c8a988eb6c3dcdc363622dbcf4.png)
错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_144\lib\dt.jar;C:\Program
我下载的版本是:kafka_2.11-1.0.0
解决方法很简单。
打开路径 kafka_2.11-1.0.0\bin\windows 下的文件 kafka-run-class.bat
修改第179行
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
给%CLASSPATH%加上双引号即可。其他版本若遇到此问题,也是修改这一句代码,但不一定在这一行。
在启动前,任然需要修改server.properties中log.dir的配置目录,
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/732e677f9ab6380970159e14942d1295.png)
修改后,启动服务:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/338d552e701d18adfc9c292ff6617d84.png)
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kjTest
可以使用如下命令查看创建的主题列表:
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic kjTest
此时可以从控制台输入信息,待消费者启动后可接收到生产者发布的消息。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/d66de06c457dfa4d3440e9e2e215a381.png)
bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic kjTest --from-beginning
- 此时便能看到发布出去的消息了
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/67b44994978d0ea653514ff8d9f7ee1a.png)
第一个命令窗口->启动zookeeper服务:
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
第二个命令窗口->启动kfaka服务:
bin\windows\kafka-server-start.bat config\server.properties
第三个命令窗口->启动启produce:
创建一个主题:
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic ydc1Test
使用如下命令查看创建的主题列表:
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
启动生产者:
bin\windows\kafka-console-producer.bat --broker-list 192.168.51.41:9092 --topic ydc1Test
第四个命令窗口->启动consumer:
bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic ydc1Test --from-beginning
二、Java:测试kafka生产和消费
参考网址:http://blog.csdn.net/honglei915/article/details/37563647
三、心得总结:
1.produce启动的时候,参数使用的是kafka的端口(默认:9092);而consumer启动的时候使用的是zookeeper(默认:2181)的端口;
2.必须先创建topic才能使用;
3.topic本质是以文件的形式储存在zookeeper上的。
config/server-1.properties:
broker.id=<new id>
listeners=PLAINTEXT://:<new port>
log.dir=<you log dir>
操作步骤:
- 1).分别启动需要的kafka服务
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/d1f5d4c1d3b244d9f0fb8e834fc3560e.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/4b05ddf178d407e2674a9da20e6d6f75.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/d48f824cb8dea3298f46749a3ddaada9.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/9a9201b5499f70c3bf3e0d8b664bbdf6.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/2c47a5e05f6280e35f02569056e300b5.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/ecaa0d77c88f5ad416379c00ab269a48.png)
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/d5d5f05d7bad8bdcb92fe9253f8e57c4.png)
![producer](https://i-blog.csdnimg.cn/blog_migrate/756da74dc1875ec3db2ae9ba710fdcaf.png)
![consumer](https://i-blog.csdnimg.cn/blog_migrate/162786cb565dcff92ce9eb678b5685a9.png)
就查看当前状态:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/f1cd9aa6caeb0979141aa7973394a85f.png)
此时的leader换成了broker 0