博主最近在學習有關kafka的配置安裝以及在spring的集成使用。但網上關於kafka的配置參考資料基本都是於linux下的配置,於是博主在整理了相關windows下kafka的配置記錄在博客里。由於是簡單配置所以在這里只建了一個topic以及一個producer和兩個consumer。
關於kafka具體是什么以及他的設計原理使用場景等等請看上篇博客,轉自大佬。傳送門:http://www.cnblogs.com/wdfordream/p/7324975.html。
在官網上下載 zookeeper和kafka(我下的版本kafka_2.11-0.11.0.0,這個版本中bin目錄下有windows目錄),注意不要下載源碼包(名字中帶有src),否則啟動的時候會報錯。
1、配置好jdk環境
2、解壓zookeeper到指定目錄,找到解壓后目錄中conf文件夾中zoo_sample - 副本.cfg文件,復制在conf中改名為zoo.cfg。在bin文件夾中打開zkServer.bat啟動zookeeper。
至此,zookeeper啟動完成。
3、解壓kafka到指定目錄。查看kafka根目錄中config文件夾下server.properties,確認其中關於zookeeper的連接端口和zookeep中zoo.cfg的端口一致。
3.1、啟動kafka
在cmd中進入kafka根目錄。輸入以下命令:
.\bin\windows\kafka-server-start.bat .\config\server.properties
kafka啟動成功
3.2、創建topic
在cmd中進入kafka\bin\windows目錄,輸入以下命令:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
創建成功
3.3、創建kafka producer
在cmd中進入kafka\bin\windows目錄,輸入以下命令:
kafka-console-producer.bat --broker-list localhost:9092 --topic test
注意這里的端口和server.properties的端口號一致。
3.4創建consumer
在cmd中進入kafka\bin\windows目錄,輸入以下命令:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
以同樣的方式創建另一個consumer。
4、測試
在producer中輸入一句話並回車,可以在兩個consumer中得到相關信息。
5、其他相關命令
查看已建立的topics:kafka-topics.bat --list --zookeeper localhost:2181
查看每個節點信息 :kafka-topics.bat --describe --zookeeper localhost:2181 --topic my-replicated-topic
6、問題整理
6.1、kafka啟動時報異常Caused by:java.lang.OutOfMemoryError:Map failed
在這里博主的辦法是將kafka-server-run.bat里的參數set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M改為256M,如果有更好的解決辦法謝謝大家能告訴我。
6.2、kafka啟動時報異常Caused by: java.nio.file.FileSystemException: \tmp\kafka-logs\topic.alarmMatchFace-0\00000000000000009163.log -> \tmp\kafka-logs\topic.alarmMatchFace-0\00000000000000009163.log.deleted: 另一個程序正在使用此文件,進程無法訪問。
主要是因為tmp/kafka-logs文件的日志達到了1G且未被清理。由於這樣的錯誤是在kafka服務關閉后重啟kafka服務引起的,博主暫無什么好的解決方法,每次把tmp下的kafka-logs文件夾刪除,再啟動kafka服務就不會報錯了,希望各位大大如果有好的方法能告知我一下,謝謝啦。