1、准備
kafka 依賴 zookeeper,要運行kafka,需要先部署zk.(所以先部署好zk先吧)
2、下載 kafka
官網:https://kafka.apache.org/downloads.html
可以下載最新的穩定版本就行
3、
二、kafka 部署
1、單機部署
安裝目錄為:/home/bigdata/middleware/kafka/kafka_2.13-3.1.0
1、創建幾個目錄備用(logs & data)
mkdir logs
mkdir data
2、修改配置文件
vim config/server.properties
(注: config 目錄下面有很多配置文件,也有 zk 的配置文件,kafka 對應的是這個 server.properties 不小心會弄混)
這兒有一個地方要注意一下:(個人感覺這兒最好是寫明確的ip,或明確的 hostname。。。一開始的時候,寫的是默認的:listeners=PLAINTEXT://:9092,然后就報了一個錯:Kafka 創建topic 超時異常: Timed out waiting for a node assignment 搞了挺久,不熟悉部署,確實會浪費一些時間)
listeners=PLAINTEXT://127.0.0.1:9092
(后續:這個項,注釋掉,不要顯式提供就可以了。一旦放開注釋,就只能指定一個了,不打開這個項的注釋,就不會有這樣的問題了
3、啟動
創建個腳本,方便后續使用:vim start-kafka.sh
啟動腳本: ./bin/kafka-server-start.sh config/server.properties >> logs/kafka.log 2>&1 &
4、啟動成功:
有這樣的字樣,表示啟動成功:INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
5、試一下,創建一個 topic
一些部署過程中的錯誤記錄:
1、Timed out waiting for a node assignment
報這個錯,是因為在配置文件 server.conf 中有一個項 listeners=PLAINTEXT://:9092
剛開始的時候,只放開了這個注釋,然后使用默認,
后來發現,這個最好還是指定一下IP,寫成: listeners=PLAINTEXT://127.0.0.1:9092,再重啟kafka,就好了。
獲取 topic 列表:
./bin/kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092 這樣是能查得到的了。
2、只能ping通配置的listers的 ip
配置文件中,listeners=PLAINTEXT://127.0.0.1:9092 配置啟動后,
在服務器本地執行: telnet 127.0.0.1 9092 成功,但執行 telnet 10.12.xx.xx 9092 就連不通了。
就有點疑惑。
但本地就必須得通過內網ip的方式去訪問kafka啊,於是只能把 listeners=PLAINTEXT://10.12.xx.xx:9092 去啟動,
於只也只能通過10.12.xx.xx 去連接了, 127.0.0.1 也連不通了,相當奇怪。
一些指令:
創建topic: ./kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --replication-factor 1 --partitions 1 --topic test1
生產者指令:bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --broker-list 127.0.0.1:9092 --topic test
消費者指令:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
消費者指令(指定topic):bin/kafka-console-consumer.sh --bootstrap-server 10.9.13.78:9092 --topic test --group test1
如果消息者指令不指定topic,開啟多個,它會按不同groupid 去啟動