Linux系統下kafka叢集環境的搭建
1:搭建kafka叢集環境需要安裝JDK、Zookeeper叢集環境
JDK的安裝可以參考https://mp.csdn.net/postedit/84196901這篇部落格
Zookeeper叢集環境的安裝可以參考https://mp.csdn.net/postedit/84201320這篇部落格,具體的步驟在部落格上面有詳細的說明
2:kafka的安裝和配置
kafka下載地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz
#我的目錄統一放在/opt
#首先建立kafka資料夾
cd /opt
mkdir kafka 建立kafka資料夾
cd kafka\
mkdir kafkalogs #建立kafka訊息目錄,主要存放kafka訊息,對應server1伺服器
mkdir kafkalogs1 #建立kafka訊息目錄,主要存放kafka訊息,對應server2伺服器
mkdir kafkalogs2 #建立kafka訊息目錄,主要存放kafka訊息,對應server3伺服器
#解壓kafka_2.11-1.0.0.tgz到kafka目錄下
tar -zvxf kafka_2.11-1.0.0.tgz
#如果是三臺真實的linux伺服器,只需要將kafka_2.11-1.0.0.tgz解壓到三臺伺服器的/opt/kafka目錄下,再新建kafkalogs即可
修改kafka配置檔案
#進入到config目錄
cd /opt/kafka/kafka_2.11-1.0.0/config/
我們可以看到目錄下有zookeeper的一些檔案,這是kafka內建的zookeeper叢集,我們可以使用它來直接啟動,但建議使用獨立的zookeeper叢集。
-rw-r--r--. 1 root root 906 Oct 27 08:56 connect-console-sink.properties -rw-r--r--. 1 root root 909 Oct 27 08:56 connect-console-source.properties -rw-r--r--. 1 root root 5807 Oct 27 08:56 connect-distributed.properties -rw-r--r--. 1 root root 883 Oct 27 08:56 connect-file-sink.properties -rw-r--r--. 1 root root 881 Oct 27 08:56 connect-file-source.properties -rw-r--r--. 1 root root 1111 Oct 27 08:56 connect-log4j.properties -rw-r--r--. 1 root root 2730 Oct 27 08:56 connect-standalone.properties -rw-r--r--. 1 root root 1221 Oct 27 08:56 consumer.properties -rw-r--r--. 1 root root 4727 Oct 27 08:56 log4j.properties -rw-r--r--. 1 root root 1919 Oct 27 08:56 producer.properties -rw-r--r--. 1 root root 173 Jan 7 05:54 server-1.properties -rw-r--r--. 1 root root 173 Jan 7 05:56 server-2.properties -rw-r--r--. 1 root root 172 Jan 7 05:55 server.properties -rw-r--r--. 1 root root 1032 Oct 27 08:56 tools-log4j.properties -rw-r--r--. 1 root root 1023 Oct 27 08:56 zookeeper.properties
我們主要修改 server.properties 這個檔案即可
broker.id=0 listeners=PLAINTEXT://127.0.0.1:9092 port=9092 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
因為我是在一臺伺服器搭建,可以將server.properties複製兩份,分別命名為server1.properties,server2.properties,來模擬三臺伺服器。如果是在三臺不同伺服器,則不需要複製多份,只需要在三臺伺服器分別對server.properties進行配置即可.
#在config目錄下複製兩份server.properties,並命名 server-1.propertis, server-2.propertis cp server.properties server-1.propertis cp server.properties server-2.propertis
修改server1.properties如下:
broker.id=1 listeners=PLAINTEXT://127.0.0.1:9093 port=9093 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs1 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
修改server2.properties如下:
broker.id=2 listeners=PLAINTEXT://127.0.0.1:9094 port=9094 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs2 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
啟動kafka叢集並測試
1、啟動服務
#從後臺啟動Kafka叢集(3臺都需要啟動) #進入到kafka的根目錄 cd /opt/kafka/kafka_2.11-1.0.0 #模擬啟動三個配置檔案,代表三臺伺服器 ./bin/kafka-server-start.sh -daemon config/server.properties ./bin/kafka-server-start.sh -daemon config/server1.properties ./bin/kafka-server-start.sh -daemon config/server2.properties # 啟動命令中的 -daemon 表示以守護程序的方式啟動
2、測試kafka
建立主題:
#建立一個test主題,分割槽數為3,備份數為3
#在kafka根目錄執行下面命令
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 3 --topic test
啟動生產者:
#kafka根目錄執行,啟動一個生產者
bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
不要關閉生產者視窗,再開啟一個新視窗,進入到kafka根目錄,啟動消費者:
#啟動消費者命令
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning
生產者傳送訊息列表:
消費者接收資訊列表:
在生產者傳送一條訊息,檢視消費者是否有接收成功。接收成功後kafka整合環境搭建完成。