在Ubuntu上配置Kafka环境可以分为几个主要步骤:安装Java、下载和解压Kafka、配置Zookeeper、配置Kafka、启动服务以及验证配置。以下是详细的步骤:
Kafka是用Java编写的,因此首先需要在系统上安装Java。推荐使用OpenJDK。
sudo apt update
sudo apt install openjdk-8-jdk
验证Java是否安装成功:
java -version
从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 -C /usr/local
cd /usr/local/kafka_2.12-3.5.2
Kafka 2.8.0及以上版本不再依赖外部Zookeeper,但为了完整性,这里仍然提供一个基本的Zookeeper配置示例。
sudo mkdir -p /usr/local/zookeeper/data
sudo mkdir -p /usr/local/zookeeper/log
sudo cp config/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
sudo vi /usr/local/zookeeper/conf/zoo.cfg
修改以下配置项:
dataDir /usr/local/zookeeper/data
dataLogDir /usr/local/zookeeper/log
clientPort 2181
tickTime 2000
initLimit 10
syncLimit 5
server.0 localhost:2888:3888
server.1 localhost:2889:3889
server.2 localhost:2890:3890
启动Zookeeper:
sudo /usr/local/zookeeper/bin/zkServer.sh start
验证Zookeeper是否启动成功:
sudo netstat -nap | grep 2181
编辑Kafka的配置文件 server.properties
:
sudo cp config/server.properties /usr/local/kafka_2.12-3.5.2/config/
sudo vi /usr/local/kafka_2.12-3.5.2/config/server.properties
修改以下配置项:
broker.id 0
listeners PLAINTEXT://:9092
log.dirs /usr/local/kafka_2.12-3.5.2/kafka_logs
num.network.threads 3
num.io.threads 8
log.flush.interval.messages 10000
log.flush.interval.ms 1000
log.retention.hours 168
log.segment.bytes 1073741824
zookeeper.connect localhost:2181
delete.topic.enable true
启动Kafka服务器:
sudo /usr/local/kafka_2.12-3.5.2/bin/kafka-server-start.sh config/server.properties
创建一个测试Topic并验证生产者和消费者是否正常工作:
sudo /usr/local/kafka_2.12-3.5.2/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
sudo /usr/local/kafka_2.12-3.5.2/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
sudo /usr/local/kafka_2.12-3.5.2/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
启动Kafka服务:
sudo systemctl start kafka
设置Kafka服务开机自启:
sudo systemctl enable kafka
停止Kafka服务:
sudo systemctl stop kafka
检查Kafka服务状态:
sudo systemctl status kafka