在Ubuntu上调试Kafka可以通过以下步骤进行:
首先,确保你的系统上安装了Java。Kafka是用Java编写的,因此需要Java运行环境。
sudo apt update
sudo apt install openjdk-8-jdk
java -version
验证Java安装成功后,可以设置 JAVA_HOME
环境变量:
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
source ~/.bashrc
echo $JAVA_HOME
Kafka依赖于Zookeeper进行集群管理和配置。
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar xvf zookeeper-3.4.6.tar.gz
sudo mv zookeeper-3.4.6 /usr/local/zookeeper
编辑Zookeeper配置文件 /usr/local/zookeeper/conf/zoo.cfg
,更新以下配置项:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
启动Zookeeper:
sudo /usr/local/zookeeper/bin/zkServer.sh start
验证Zookeeper是否启动成功:
sudo netstat -nap | grep 2181
从Apache Kafka官网下载适合Ubuntu版本的Kafka安装包。例如,下载Kafka 3.5.2版本:
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzvf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /usr/local/kafka
进入Kafka的 bin
目录,编辑 server.properties
文件:
sudo nano /usr/local/kafka/config/server.properties
更新以下配置项:
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/usr/local/kafka/data/kafka
zookeeper.connect=localhost:2181
启动Kafka服务:
cd /usr/local/kafka/bin
./kafka-server-start.sh ../config/server.properties
验证Kafka是否启动成功:
sudo netstat -nap | grep 9092
创建一个新的Topic用于测试:
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
列出所有Topic以确认新Topic已创建:
./kafka-topics.sh --list --zookeeper localhost:2181
使用 kafka-console-producer.sh
发送消息:
./kafka-console-producer.sh --broker-list localhost:9092 --topic test
在控制台输入消息,按Enter键发送。
使用 kafka-console-consumer.sh
接收消息:
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
输出示例(显示历史消息):
hello
spark
bye
使用以下命令检查Kafka服务是否正在运行:
sudo systemctl status kafka
如果服务未运行,可以使用以下命令启动它:
sudo systemctl start kafka
要使Kafka服务在启动时自动运行,请运行:
sudo systemctl enable kafka
Kafka的日志通常位于 /var/log/kafka
目录下。检查 server.log
文件以获取错误信息:
sudo tail -f /var/log/kafka/server.log
kafkacat
kafkacat
是一个强大的命令行工具,用于查看Kafka集群的状态和消息。例如,使用以下命令查看特定主题的消息:
kafkacat -L -b localhost:9092 -t test
使用 -C
选项可以订阅并实时查看消息:
kafkacat -C -b localhost:9092 -t test -o -10