不使用 Cygwin 的情況下在Windows 運行 Apache Kafka
引言
本教程的目的是提供在 Windows 操作系統上運行 Apache Kafka 的一個手把手的指南。本指南也將提供設置 Java 與 ZooKeeper 的指導。Apache kafka 是一個快速且可伸縮的消息隊列系統,具有在讀寫環境中處理真正重載荷的能力。你可以在 http://kafka.apache.org/ 這個網站上找到更多關于 kafka 的東西。Apache kafka 需要一個正在運行的 ZooKeeper 實例,用于提供可靠的分布式調度。請在 https://zookeeper.apache.org/ 這個網站上尋找更多關于 ZooKeeper 的東西。
請查看這個視頻來將 Kafka 安裝到 Windows 上。(然而并沒有視頻,你懂的)
下載必要文件
-
根據你的操作系統和 CPU 架構下載服務器 JRE,地址為 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
-
下載并安裝 7-zip,地址為 http://www.7-zip.org/download.html
-
下載并使用 7-zip 解壓 Zookeeper,地址為 http://zookeeper.apache.org/releases.html
-
下載并使用 7-zip 解壓 Kafka,地址為 http://kafka.apache.org/downloads.html
安裝
a. 安裝及配置 Java 運行時環境(JRE)
-
開始 JRE 的安裝并選中“Change destination folder”復選框,然后點擊 install。
-
修改安裝路徑為任何名字中不帶空格的文件夾。比如 C:\Java\jre1.8.0_xx\ 。(默認情況下它將會是 C:\Program Files\Java\jre1.8.0_xx)然后點擊 Next。
-
現在通過 控制面板 -> 系統 -> 高級系統設計 -> 環境變量 來打開系統環境變量對話框。
-
點擊用戶變量中的新建按鈕,然后在變量名中輸入 JAVA_HOME,并在變量值種設置你的 jre 路徑。它看起來應該如下圖:
(Java 的路徑和版本可以隨你使用的 Kafka 版本而改變)
-
點擊確定按鈕
-
在你剛剛打開的“環境變量”對話框中的“系統變量”部分,找到 Path 變量。
-
修改路徑,在類似下圖中的已經寫有文字的文本框末尾輸入“;%JAVA_HOME%\bin”。
-
要確認 Java 的安裝情況,只需要打開 cmd 并輸入“java -version”,你就可以看到你剛剛安裝的 java 版本了。
如果你的命令提示符下出現類似上圖的內容,你就可以放心的繼續做后面的步驟了。否則,你需要檢查你的安裝版本是否與操作系統架構(x86,x64)相匹配,或 Path 環境變量是否正確。
b. 安裝及運行 Zookeeper
-
打開你的 zookeeper 配置目錄。我的目錄是 C:\zookeeper-3.4.7\conf
-
重命名 “zoo_sample.cfg” 為 “zoo.cfg”
-
在任何文本編輯器中打開 zoo.cfg,比如使用記事本,不過我比較喜歡 notepad++
-
找到并修改 dataDir=/tmp/zookeeper 這段話為 dataDir=C:\zookeeper-3.4.7\data
-
就像我們在安裝 Java 時那樣,在系統環境變量中添加條目
-
在系統變量中添加 ZOOKEEPER_HOME = C:\zookeeper-3.4.7
-
修改 Path 系統變量,添加 ;%ZOOKEEPER_HOME%\bin;
-
你可以在 zoo.cfg 文件種修改默認 zookeeper 端口(默認端口為 2181)。
-
在一個新的 cmd 中輸入 zkserver 來運行 zookeeper。
-
你將看到命令提示符出現類似下圖種的一些細節。
恭喜,你的 zookeeper 為已經啟動并運行在 2181 端口上了。
c. 配置 Kafka
-
打開你的 Kafka 配置目錄。我的目錄是 C:\kafka_2.11-0.9.0.0\config
-
修改“server.properties”文件
-
找到并修改“log.dirs=/tmp/kafka-logs”這行為“log.dir= C:\kafka_2.11-0.9.0.0\kafka-logs”
-
如果你的 zookeeper 正運行在一些其他的機器或集群上,你可以修改“zookeeper.connect=localhost:2181”為你自定義的 IP 和端口。在這次演示中,我們使用的是同一臺機器,所以不需要修改。另外 Kafka 的端口和 broker.id 也可以在這個文件中進行配置。其他設置不變。
-
你的 Kafka 將會在默認的 9092 端口上運行并連接到默認端口為 2181 的 zookeeper 上。
d. 運行 Kafka 服務器
注意:
請確保你的 zookeeper 已經啟動并在啟動 Kafka 服務器之前運行。
-
打開 kafka 安裝目錄 C:\kafka_2.11-0.9.0.0\
-
按 Shift + 右鍵并選擇“在此處打開命令行窗口”選項來在此處打開一個命令提示符
-
現在輸入 .\bin\windows\kafka-server-start.bat .\config\server.properties 并按回車鍵
-
如果一切正常的話,命令提示符的內容看起來應該如下圖
-
現在你的 Kafka 已經啟動并運行了,所以現在你可以使用 java 或 scala 代碼或在命令提示符中創建 topic 和 produce 或 consume 了。
e. 生成 Kafka 的 Topic
-
首先生成一個名為”test“的 Kafka 主題,并且設置復制因子參數為 1,因為我們只有一個 Kafka 服務器正在運行。如果你有一個包含多個 Kafka 服務的集群,你可以增大此參數,以此提高對數據可用性和系統容錯性。
-
打開一個命令行窗口,進入到目錄 C:\kafka_2.11-0.9.0.0\bin\windows
-
輸入如下命令,并回車。
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
f. 在測試服務器上生成一對生產者和消費者
-
打開一個新的命令行窗口,進入到目錄 C:\kafka_2.11-0.9.0.0\bin\windows
-
輸入如下命令,啟動一個生產者。kafka-console-producer.bat --broker-list localhost:9092 --topic test”.
-
再打開一個新的命令行窗口,同樣進入到目錄C:\kafka_2.11-0.9.0.0\bin\windows
-
輸入如下命令,啟動一個消費者。“kafka-console-consumer.bat --zookeeper localhost:2181 --topic test”
-
現在你有兩個命令行窗口,如下面兩張圖所示。
-
在生產者命令行窗口內隨便輸入一段字符,然后回車,你應該能看到同樣的消息出現在消費者的命令行窗口內。
-
如果在消費者端能看到你推送的消息,那么你已經成功的安裝了Kafka。
一些有用的命令
-
列舉 Topic: kafka-topics.bat --list --zookeeper localhost:2181
-
描述 Topic: kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
-
從頭讀消息: kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from-beginning
-
刪除 Topic: kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
參考鏈接
結論
我相信,這篇文章會對初/中級開發人員在 Windows 的服務器或者桌面系統上啟動一個 kafka 服務器帶來幫助。
你們的朋友
Gopal Tiwari
License
這篇文章以及相關代碼遵循 The Code Project Open License (CPOL) 協議