1. 程式人生 > >Windows下搭建KAFKA單機環境及常見問題

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來生產訊息,不能輸入中文,輸入中文就會退出。所以具體的解決辦法還沒找到。