Windows下搭建KAFKA單機環境及常見問題
一:前置條件
安裝好JDK,配置好JAVA_HOME一系列。在命令列輸入java -version出現下面的截圖即可:
注意:(1)預設安裝的jdk在C:\Program Files\Java下的,因為有空格,會影響kafka的使用,要把它轉譯到一個無中文無空格的目錄地址下;(2)現在新一點kafka版本都需要java 1.8的,這個要和kafka版本對應。
二:下載kafka
下載介面大致如上,每個版本有兩種模式:Source download是下載原始碼的, Binary download是直接安裝的。Scala的挑選想要的版本,沒有特殊需求可以最新版本就好。點選就會進入下面的介面:
選擇HTTP下面任意一個下載就好,下載完成後解壓到指定目錄下即可(最好配有中文和空格)。
我的目錄是E:\demo\kafka_2.12-1.1.1
三:安裝和配置
<1>安裝配置Zookeeper
(1)使用kafka內帶的zookeeper
- 在解壓的目錄下新增data目錄,進入E:\demo\kafka_2.12-1.1.1\config,開啟zookeeper.properties,修改為下面並儲存
dataDir=/kafka_2.12-1.1.1/data
- 接下來命令列進入目錄:E:\demo\kafka_2.12-1.1.1,執行下面的指令碼來開啟zookeeper:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
- 成功會出現下面的介面:
- 用下面的命令來停止zookeeper服務:
.\bin\windows\zookeeper-server-stop.bat .\config\zookeeper.properties
(2)使用單獨的zookeeper
- 選擇地址下載後,解壓,和kafka一樣,解壓目錄不要有中文和空格。我的目錄為:E:\demo\zookeeper-3.4.13
- 進入目錄E:\demo\zookeeper-3.4.13\conf,複製一份zoo_sample.cfg並重命名為zoo.cfg
- 編輯dataDir=/zookeeper-3.4.13/data
- 新增環境變數:
ZOOKEEPER_HOME E:\demo\zookeeper-3.4.13
PATH現有值後面新增 ;%ZOOKEEPER_HOME%/bin;
- 命令列E:\demo\zookeeper-3.4.13\bin,執行命令:zkServer
<2>配置kafka
(1) 啟動kafka的通訊伺服器broker
進入目錄E:\demo\kafka_2.12-1.1.1\config,修改檔案server.properties。木有目錄新建目錄
log.dirs=/kafka_2.12-1.1.1/logs
命令列進入目錄E:\demo\kafka_2.12-1.1.1,執行下面的命令:
.\bin\windows\kafka-server-start.bat .\config\server.properties
最後出現下面的結果就是成功啟動啦:(保持介面,不要關閉)
(2) 建立一個主題topic
命令列進入目錄:E:\demo\kafka_2.12-1.1.1\bin\windows,執行下面的命令:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
出現下面的介面就是建立成功,其中testTopic就是我們建立的topic,後面會使用到。命令列就可以關閉了。
(3) 建立一個生產者producer
命令列進入目錄:E:\demo\kafka_2.12-1.1.1\bin\windows,執行下面的命令:localhost:9092是我們kafka服務broker的地址,testTopic就是我們上面建立的topic,這個命令就是用來在testTopic下生產一條訊息。
kafka-console-producer.bat --broker-list localhost:9092 --topic testTopic
回車後,會出現下面的輸入框,這裡是生產了一條訊息“hello, kafka”,想要繼續生產訊息可以回車輸入下一條就好。
(4) 建立一個消費者consumer
命令列進入目錄:E:\demo\kafka_2.12-1.1.1\bin\windows,執行下面的命令。其中 localhost:2181是我們zookeeper的地址, testTopic是我們要消費的主體。生產者連線kafka服務broker, 消費者連線zookeeper服務。
kafka-console-consumer.bat --zookeeper localhost:2181 --topic testTopic
回車後,兩邊命令列沒關閉的情況下,在生產者那新增的訊息,消費者這邊就會實時消費展示。這個時候我們開啟狀態的命令列視窗有四個(zookeeper 、broker 、producer 、consumer)
四:常見問題
1:啟動zookeeper報錯:����: �Ҳ��������������� Files\Java\jdk1.8.0_25\lib;C:\Programam
原因及解決方法:jdk目錄有空格,把jdk重新拷貝到一個無空格和中文的目錄下,重新配置JAVA_HOME的環境變數,儲存後開啟新的命令列再執行命令即可。
2:啟動kafka服務報錯:Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/Kafka : Unsupported major.minor version 52.0
原因及解決方法:是因為jdk版本不滿足要求造成的,52要求jdk版本為1.8。各個jdk版本對應的數字如下:
JDK 9 = 53, JDK 8 = 52, JDK 7 = 51, JDK 6.0 = 50, JDK 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45
3:kafka-console-producer.bat生產的帶中文的訊息,消費者取到為亂碼,介面大致為:
原因及解決辦法:命令列的編碼格式預設是GBK(936)。在命令列輸入chcp可以檢視命令列的編碼格式:
可以用chcp 65001來將編碼格式修改為UTF-8。修改為UTF-8來生產訊息,不能輸入中文,輸入中文就會退出。所以具體的解決辦法還沒找到。