如何在Ubuntu上快速配置Apache Kafka
sudo apt update && sudo apt upgrade -y
Kafka需要Java運行環境,推薦使用OpenJDK 11及以上版本:
sudo apt install openjdk-11-jdk -y
# 驗證Java安裝
java -version
輸出應顯示Java版本信息(如openjdk version "11.0.xx"
)。
從Apache Kafka官網下載最新穩定版本(如3.7.0),解壓至/opt
目錄(系統級軟件推薦路徑):
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz -C /opt
sudo mv /opt/kafka_2.13-3.7.0 /opt/kafka # 重命名便于管理
創建Kafka專用用戶(提升安全性,避免root運行):
sudo useradd -m -s /bin/bash kafka
sudo passwd kafka # 設置密碼
sudo chown -R kafka:kafka /opt/kafka # 賦予用戶目錄所有權
切換至kafka用戶:sudo su - kafka
。
進入Kafka配置目錄,編輯核心配置文件server.properties
(關鍵參數說明見注釋):
nano ~/kafka/config/server.properties
修改以下核心配置:
# Broker唯一標識(集群中需唯一)
broker.id=0
# 監聽地址(0.0.0.0允許遠程訪問,本地測試用localhost)
listeners=PLAINTEXT://:9092
# 對外暴露的地址(遠程訪問需替換為服務器IP)
advertised.listeners=PLAINTEXT://your_server_ip:9092
# 日志存儲目錄(需提前創建)
log.dirs=/home/kafka/kafka/data/kafka
# Zookeeper連接地址(本地測試用localhost)
zookeeper.connect=localhost:2181
# 開啟自動刪除過期Topic(可選,默認false)
delete.topic.enable=true
保存并退出(Ctrl+O
→Enter
→Ctrl+X
)。
Kafka使用Zookeeper進行集群管理,開發測試可使用Kafka自帶的Zookeeper:
# 創建Zookeeper數據目錄
mkdir -p ~/kafka/data/zookeeper
# 復制Zookeeper配置模板并修改
cp ~/kafka/config/zookeeper.properties ~/kafka/config/zookeeper.properties.bak
nano ~/kafka/config/zookeeper.properties
修改以下配置:
# 數據存儲目錄(需與上面創建的目錄一致)
dataDir=/home/kafka/kafka/data/zookeeper
# 客戶端連接端口
clientPort=2181
# 會話超時時間(毫秒)
tickTime=2000
啟動Zookeeper:
~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties &
驗證Zookeeper是否啟動(顯示LISTEN
表示成功):
netstat -plnt | grep 2181
啟動Kafka(后臺模式,避免占用終端):
~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties &
驗證Kafka是否啟動(顯示LISTEN
表示成功):
netstat -plnt | grep 9092
創建名為test
的Topic(1個分區,1個副本,適合測試):
~/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
查看所有Topic(確認test
已創建):
~/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
啟動生產者,向test
Topic發送消息:
~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
輸入消息(如Hello, Kafka on Ubuntu!
),按Ctrl+D
結束輸入。
啟動消費者,從test
Topic接收消息:
~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
應能看到生產者發送的消息。
replication.factor≥2
)、調整日志保留策略(log.retention.hours
)等。listeners
和advertised.listeners
為服務器IP,并開放防火墻端口(9092、2181)。