今天下午真是天朗氣清啊,作者的內心也是盪漾無比,趁着這個大號的心情,給學習kafka的童鞋開一扇門~
本人在瀏覽kafka搭建的時候,沒有發現一篇kafka在windows環境的搭建文章是清晰明瞭(劃重點)的。辣麼,今天就由我來給大家寫一篇完整的Kafka集羣搭建的文章。在發正文之前,大哥我在國內知名的大咖羣裏得到了一個消息,kafka還可以用作區塊鏈做共識(顏色必須夠騷),大家都來漲漲姿勢。
說完上面的話,大家是不是對我的崇拜一下就起來啦。
正文(大家肅靜!)
本人下載的是apache-zookeeper-3.5.8-bin.tar.gz,kafka_2.12-2.5.0.tgz版本的壓縮包。
運行kafka是需要在zookeeper註冊的。
啓動zookeeper的集羣
1.
先把apache-zookeeper-3.5.8-bin.tar.gz解壓,把解壓後的apache-zookeeper-3.5.8-bin文件複製三個,並改名爲apache-zookeeper-3.5.8-bin-0,apache-zookeeper-3.5.8-bin-1,apache-zookeeper-3.5.8-bin-2。
2.
在.\apache-zookeeper-3.5.8-bin-0\conf\zoo_sample.cfg文件複製並重命名爲zoo.cfg,剩下的兩個都這樣操作。
3.
打開\apache-zookeeper-3.5.8-bin-0\conf\zoo.cfg文件,修改如下參數
# zookeeper的配置路徑一定要用\\,否則路徑不會被識別
dataDir=E:\\workAndLike\\zookeeper\\apache-zookeeper-3.5.8-bin-0\\data
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
# 這是修改zookeeper啓動端口的
admin.serverPort=8080
打開\apache-zookeeper-3.5.8-bin-1\conf\zoo.cfg文件,修改如下參數
# zookeeper的配置路徑一定要用\\,否則路徑不會被識別
dataDir=E:\\workAndLike\\zookeeper\\apache-zookeeper-3.5.8-bin-1\\data
clientPort=2182
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
# 這是修改zookeeper啓動端口的
admin.serverPort=8081
打開\apache-zookeeper-3.5.8-bin-2\conf\zoo.cfg文件,修改如下參數
# zookeeper的配置路徑一定要用\\,否則路徑不會被識別
dataDir=E:\\workAndLike\\zookeeper\\apache-zookeeper-3.5.8-bin-2\\data
clientPort=2183
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
# 這是修改zookeeper啓動端口的
admin.serverPort=8082
4.
在.\apache-zookeeper-3.5.8-bin-0\data文件夾下新建名稱爲myid的文件(名稱爲myid,無後綴),編輯文件內容
內容爲0
version-2文件夾是運行後自動生成的。
說好給大家寫一篇詳細的文章,還是把myid的文件打開給大家看看。
在.\apache-zookeeper-3.5.8-bin-1\data文件夾下新建名稱爲myid的文件(名稱爲myid,無後綴),編輯文件內容
內容爲1,此處不貼圖
在.\apache-zookeeper-3.5.8-bin-2\data文件夾下新建名稱爲myid的文件(名稱爲myid,無後綴),編輯文件內容
內容爲2,此處不貼圖
5.
啓動zookeeper, 在bin文件夾下執行zkServer.cmd
剩下的兩個同樣方法啓動。
**重點**
三個zookeeper是互相註冊的,啓動前面兩個zookeeper的時候會報錯,這是正常的。
這是apache-zookeeper-3.5.8-bin-0啓動的報錯,可以猜出來apache-zookeeper-3.5.8-bin-0啓動的報錯是找不到127.0.0.1:8882:7772,這是截圖就不發了。
啓動kafka的集羣
1.
解壓kafka_2.12-2.5.0.tgz壓縮包,將.\kafka_2.12-2.5.0\config文件夾下的server.properties文件, 複製3個並分別改名爲server1.properties,server2.properties,server3.properties
2.
對server1.properties修改
broker.id=0
# 本人是在一臺機搭建集羣,這改爲127.0.0.1
listeners=PLAINTEXT://127.0.0.1:9092
# broker處理消息的最大線程數 處理網絡io
num.network.threads=3
# broker處理磁盤IO的線程數
num.io.threads=8
log.dirs=E:\kafka_2.12-2.5.0\logs\log1
# 保留三天,也可以更短 72
log.retention.hours=72
# 對應zookeeper啓動的端口
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
對server2.properties修改
broker.id=1
# 本人是在一臺機搭建集羣,這改爲127.0.0.1
listeners=PLAINTEXT://127.0.0.1:9093
# broker處理消息的最大線程數 處理網絡io
num.network.threads=3
# broker處理磁盤IO的線程數
num.io.threads=8
log.dirs=E:\kafka_2.12-2.5.0\logs\log2
# 保留三天,也可以更短 72
log.retention.hours=72
# 對應zookeeper啓動的端口
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
對server3.properties修改
broker.id=2
# 本人是在一臺機搭建集羣,這改爲127.0.0.1
listeners=PLAINTEXT://127.0.0.1:9094
# broker處理消息的最大線程數 處理網絡io
num.network.threads=3
# broker處理磁盤IO的線程數
num.io.threads=8
log.dirs=E:\kafka_2.12-2.5.0\logs\log3
# 保留三天,也可以更短 72
log.retention.hours=72
# 對應zookeeper啓動的端口
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
3.
啓動kafka
在kafka_2.12-2.5.0下執行下面的命令
bin\windows\kafka-server-start.bat config\server1.properties
bin\windows\kafka-server-start.bat config\server2.properties
bin\windows\kafka-server-start.bat config\server3.properties
4.
4.1創建topic,同時分配了3個分區,3個備份,topic的名稱爲my-test
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --replication-factor 3 --partitions 3 --topic my-test
效果如圖:
4.2查看topic
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181,localhost:2182,localhost:2183
效果如圖:
4.3 查看topic爲my-test的具體信息
bin\windows\kafka-topics.bat --zookeeper localhost:2181,localhost:2182,localhost:2183 --describe --topic my-test
效果如圖:
4.4 啓動生產者命令
bin\windows\kafka-console-producer.bat --broker-list localhost:9092,localhost:9093,localhost:9094 --topic my-test
效果如圖:
4.5 啓動消費者命令
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic my-test
如果電腦內存比較小,我們可以修改kafka的啓動文件來配置。
修改kafka-server-start.bat
IF NOT ERRORLEVEL 1 (
rem 32-bit OS
set KAFKA_HEAP_OPTS=-Xmx256M -Xms256M
) ELSE (
rem 64-bit OS
set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
)