Kafka叢集完全分散式安裝
一、上傳、解壓kafka壓縮包
將kafka壓縮包上傳到Linux系統中,並進行解壓
[[email protected] software]# pwd /home/software [[email protected] software]# ll 總用量 48352 drwxr-xr-x 8 uucp 143 4096 10月 8 11:41 jdk1.8 drwxr-xr-x 8 root root 4096 11月 28 10:47 kafka_2.11-1.0.0 -rw-r--r-- 1 root root 49475271 11月 26 2017 kafka_2.11-1.0.0.tgz drwxr-xr-x 7 root root 4096 11月 28 14:56 kafka-manager-1.3.2.1 [ |
二、修改配置檔案
進入到kafka的目錄下的conf目錄下,修改server.properties檔案
[[email protected] config]# pwd /home/software/kafka_2.11-1.0.0/config [[email protected] config]# ll 總用量 64 -rw-r--r-- 1 root root 906 10月 27 2017 connect-console-sink.properties -rw-r--r-- 1 root root 909 10月 27 2017 connect-console-source.properties -rw-r--r-- 1 root root 5807 10月 27 2017 connect-distributed.properties -rw-r--r-- 1 root root 883 10月 27 2017 connect-file-sink.properties -rw-r--r-- 1 root root 881 10月 27 2017 connect-file-source.properties -rw-r--r-- 1 root root 1111 10月 27 2017 connect-log4j.properties -rw-r--r-- 1 root root 2730 10月 27 2017 connect-standalone.properties -rw-r--r-- 1 root root 1221 10月 27 2017 consumer.properties -rw-r--r-- 1 root root 4727 10月 27 2017 log4j.properties -rw-r--r-- 1 root root 1919 10月 27 2017 producer.properties -rw-r--r-- 1 root root 6908 11月 28 10:44 server.properties -rw-r--r-- 1 root root 1032 10月 27 2017 tools-log4j.properties -rw-r--r-- 1 root root 1023 10月 27 2017 zookeeper.properties [ |
修改如下配置(port沒有的話,需要自己新增)
broker.id=1 port=9092 log.dirs=/home/software/kafka_2.11-1.0.0/tmp zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181 |
將kafka_2.11-1.0.0目錄發到hadoop2和hadoop3對應的目錄下
[ /home/software [[email protected] software]# scp -r kafka_2.11-1.0.0 [email protected]:/home/software/ |
修改server.properties檔案,修改broker.id(分別為2和3,叢集內的所有機器broker.id值不能一樣)
三、啟動
- 啟動zookeeper,在各個機器的zookeeper的bin目錄下執行:./zkServer.sh start
[[email protected] bin]# pwd /home/software/zookeeper/bin [[email protected] bin]# ./zkServer.sh start |
- 啟動kafka,在各個機器的kafka的bin目錄下執行:./kafka-server-start.sh ../config/server.properties
[[email protected] bin]# pwd /home/software/kafka_2.11-1.0.0/bin [[email protected] bin]# ./kafka-server-start.sh ../config/server.properties |
四、測試
在一個節點(本文中選擇hadoop1節點)的kafka的bin目錄下執行以下操作
- 建立一個擁有2個副本的topic
[[email protected] bin]# pwd /home/software/kafka_2.11-1.0.0/bin [[email protected] bin]# ./kafka-topics.sh --create --zookeeper hadoop1:2181 --replication-factor 2 --partitions 1 --topic park |
--replication-factor:副本的數量
--partition:分割槽數
--topic:主題
- 檢視主題
[[email protected] bin]# pwd /home/software/kafka_2.11-1.0.0/bin [[email protected] bin]# ./kafka-topics.sh --list --zookeeper hadoop1:2181 __consumer_offsets park |
- 檢視每個節點的資訊
[[email protected] bin]# pwd |
可以看到,主題名為park;分割槽數量為1;副本數量為2;leader為2,對應hadoop2
- 啟動生產者,向topic傳送訊息
[[email protected] bin]# pwd > |
- 啟動消費者,從topic中消費訊息
[[email protected] bin]# pwd |
- 生產消費過程
生產者每生產一條資料,消費者便消費一條資料
五、試驗:容錯性
將hadoop2的kafka停掉(可以使用kill -9 xxx或其他方法),然後檢視節點資訊
[[email protected] bin]# pwd |
可以看到,此時leader變成了hadoop3
重新啟動hadoop2的kafka,leader不變,仍然是hadoop3
[[email protected] bin]# jps 1937 QuorumPeerMain 2874 Jps 2575 Kafka [[email protected] bin]# ./kafka-topics.sh --describe --zookeeper hadoop1:2181 --topic park Topic:park PartitionCount:1 ReplicationFactor:2 Configs: Topic: park Partition: 0 Leader: 3 Replicas: 3,2 Isr: 3,2 [[email protected] bin]# |
可以看到,某一個機器宕機了之後,叢集仍然正常工作,從而保證了kafka的容錯性。
更多詳細內容,請參考Kafka的官方文件:https://kafka.apache.org/documentation/