1. 程式人生 > >win10搭建並執行kafka

win10搭建並執行kafka

前置條件:
想要在win執行kafka需要先配置好jdk喝zookeeper

jdk 下載地址:
https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
本人用的是jdk1.8 ,之前電腦上有安裝1.7的jdk,在執行kafka的時候報錯:
Unsupported major.minor version 52.0。應該是我下的kafka版本太新,1.7jdk不支援,所以從新安裝的1.8 總算把kafka 給跑起來了。jdk的安裝和配置就不說了,比較簡單,網上有很多教程,驗證的時候注意,java -version 和javac -version 版本是一致 的需要,不然也會出錯。

2.zookeeper 安裝配置。

執行kafka為什麼要依賴zookeeper:
需要一個地方存元資訊。zookeeper又是分散式,做配置管理比較好的。於是就用上了。
沒zookeeper的話,也需要一套機制儲存元資料和交換叢集資訊的工具。

kafka的官方文件有說明。zookeeper是為了解決分散式一致性問題的工具。

至於kafka為什麼使用zk,你首先要知道zk的作用, 作為去中心化的叢集模式。
需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。

如果沒了zk消費者如何知道,如果每次消費者在消費之前都去嘗試連線生產者測試下是否連線成功,那麼效率問題怎麼解決。

所以kafka需要zk,在kafka的設計中就依賴了zk了。

下載地址:https://zookeeper.apache.org/releases.html

下載後,解壓放在目錄D:\bigdata(本文所用的目錄)下,關於zookeeper以及kafka的目錄,路徑中最好不要出現空格,比如D:\Program Files,儘量別用,執行指令碼時會有問題。

①進入zookeeper的相關設定所在的檔案目錄,例如本文的:D:\bigdata\zookeeper-3.4.10\conf

②將”zoo_sample.cfg”複製一份並命名為”zoo.cfg”

③開啟zoo.cfg(至於使用什麼編輯器,根據自己喜好選即可),找到並編輯:

將 dataDir=/tmp/zookeeper 改成
D:/bigdata/zookeeper-3.4.10/data或 D:\bigdata\zookeeper-3.4.10\data(路徑僅為示例,具體可根據需要配置)

這裡注意,路徑要麼是”/”分割,要麼是轉義字元”\”,這樣會生成正確的路徑(層級,子目錄)。

④與配置jre類似,在系統環境變數中新增:

a.系統變數中新增ZOOKEEPER_HOME=D:\bigdata\zookeeper-3.4.10

b.編輯系統變數中的path變數,增加%ZOOKEEPER_HOME%\bin

⑤在zoo.cfg檔案中修改預設的Zookeeper埠(預設埠2181)

⑥開啟cmd視窗,輸入zkserver,執行Zookeeper,執行結果如下:

這裡寫圖片描述
恭喜,Zookeeper已經安裝完成,已在2181埠執行。

3.安裝執行kafka
kafka下載地址:http://kafka.apache.org/downloads

要下載Binary downloads這個型別,不要下載原始檔,這種方便使用。下載後,解壓放在D:\bigdata目錄下。

①進入kafka配置檔案所在目錄,D:\bigdata\kafka_2.11-0.9.0.1\config

②編輯檔案”server.properties”,找到並編輯:

log.dirs=/tmp/kafka-logs 改成 log.dirs=D:/bigdata/kafka_2.11-0.9.0.1/kafka-logs 或者 D:\bigdata\kafka_2.11-0.9.0.1\kafka-logs

同樣注意:路徑要麼是”/”分割,要麼是轉義字元”\”,這樣會生成正確的路徑(層級,子目錄)。錯誤路徑情況可自行嘗試,資料夾名為這種形式:bigdatakafka_2.11-0.9.0.1kafka-logs

③在server.properties檔案中,zookeeper.connect=localhost:2181代表kafka所連線的zookeeper所在的伺服器IP以及埠,可根據需要更改。本文在同一臺機器上使用,故不用修改。

④kafka會按照預設配置,在9092埠上執行,並連線zookeeper的預設埠2181。

還有一點特別注意:在kafka安裝目錄中找到bin\windows目錄中的kafka-run-class.bat找到179行為%CLASSPATH%加上雙引號。不然執行kafka的時候回提示報錯:錯誤: 找不到或無法載入主類 Files\Java\jdk1.7.0_80\lib;
這裡寫圖片描述

執行kafka並一個簡單的例子

提示:請確保啟動kafka伺服器前,Zookeeper例項已經在執行,因為kafka的執行是需要zookeeper這種分散式應用程式協調服務。

①進入kafka安裝目錄D:\bigdata\kafka_2.11-0.9.0.1

②按下shift+滑鼠右鍵,選擇”在此處開啟命令視窗”,開啟命令列。

③在命令列中輸入:
.\bin\windows\kafka-server-start.bat .\config\server.properties
回車。

④正確執行的情況為:
這裡寫圖片描述

到目前為止,zookeeper以及kafka都已正確執行。保持執行狀態,不要關閉。

建立主題

①建立主題,命名為”test0811”,replicationfactor=1(因為只有一個kafka伺服器在執行)。可根據叢集中kafka伺服器個數來修改replicationfactor的數量,以便提高系統容錯性等。

②在D:\bigdata\kafka_2.11-0.9.0.1\bin\windows目錄下開啟新的命令列

③輸入命令:

kafka-topics.bat –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test0909

回車
這裡寫圖片描述
現在這樣就建立了一個topic ,這個視窗可以關閉了。

接下來 建立生產者(producer)和消費者(consumer)

①在D:\bigdata\kafka_2.11-0.9.0.1\bin\windows目錄下開啟新的命令列。

②輸入命令,啟動producer:

kafka-console-producer.bat –broker-list localhost:9092 –topic test0811

該視窗不要關閉。

③在同目錄下開啟新的命令列。

④輸入命令,啟動consumer:
kafka-console-consumer.bat –bootstrap-server localhost:9092 –topic test0909 –from-beginning

基於Console 在bin目錄下,字尾 .sh

建立Topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

Producer傳送訊息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

在控制檯輸入要傳送的訊息:

This is a message
This is another message

Consumer接收訊息

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

輸入命令後可以看到控制檯輸出了剛才的訊息:

This is a message
This is another message