在CentOS上配置和调试Apache Kafka涉及多个步骤。以下是一个详细的指南,帮助你完成Kafka的安装、配置、启动和调试。
Kafka需要Java运行时环境(JRE)或Java开发工具包(JDK)。你可以使用以下命令安装OpenJDK:
sudo yum install java-1.8.0-openjdk-devel
验证安装:
java -version
从Apache Kafka官方网站下载最新版本的Kafka,并将其解压到你的服务器上。例如,下载Kafka 3.2.0版本:
wget https://downloads.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
tar -xzf kafka_2.13-3.2.0.tgz
cd kafka_2.13-3.2.0
编辑config/zookeeper.properties文件:
dataDir /var/lib/zookeeper
clientPort 2181
maxClientCnxns 0
创建数据目录并启动Zookeeper:
sudo mkdir -p /var/lib/zookeeper
sudo chown $(whoami):$(whoami) /var/lib/zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
编辑config/server.properties文件:
broker.id 0
listeners PLAINTEXT://:9092
log.dirs /tmp/kafka-logs
zookeeper.connect localhost:2181
num.partitions 1
default.replication.factor 1
min.insync.replicas 1
在另一个终端窗口中启动Kafka Broker:
bin/kafka-server-start.sh config/server.properties
使用以下命令创建一个Topic:
bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
使用以下命令启动一个生产者并发送消息:
bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
在控制台中输入消息并按回车键发送。
使用以下命令启动一个消费者并接收消息:
bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092
你应该能看到之前发送的消息。
kafka-consumer-groups.sh脚本调试消费者组kafka-consumer-groups.sh是一个用于查询消费者组偏移量和积压的脚本工具。你可以使用以下命令来运行该脚本:
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test-consumer --describe
start-kafka.sh和stop-kafka.sh脚本调试为了确保Kafka脚本能够正确执行,可以为其配置执行权限并进行调试:
chmod +x start-kafka.sh stop-kafka.sh
使用绝对路径启动Kafka:
/usr/local/soft/kafka-1.0.0/bin/kafka-server-start.sh -daemon /usr/local/soft/kafka-1.0.0/config/server.properties
检查Kafka是否成功启动:
echo -n "正在启动Kafka,请等待5秒"
for i in {1..5}; do
echo -n "."
sleep 1
done
echo
PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')
if [[ -n "$PIDS" ]]; then
echo "Kafka启动成功,进程ID: $PIDS"
else
echo "Kafka启动失败,请检查日志文件 $KAFKA_LOG_FILE 以获取更多信息"
exit 1
fi
如果你的服务器有防火墙,确保开放Kafka使用的端口(默认是9092):
sudo firewall-cmd --zone public --add-port 9092/tcp --permanent
sudo firewall-cmd --reload
如果你需要配置一个多节点的Kafka集群,你需要为每个节点分配唯一的broker.id,并配置listeners和advertised.listeners以指向正确的IP地址和端口。还需要配置zookeeper.connect以包含所有节点的地址。