Ubuntu系统安装Apache Kafka的详细步骤
wget(用于下载安装包)、tar(用于解压)、vim/nano(用于编辑配置文件)。可通过sudo apt update && sudo apt install -y wget tar vim安装。Kafka基于Java开发,需安装JDK 8及以上版本(推荐OpenJDK 11,兼容性更好)。
执行以下命令安装:
sudo apt update
sudo apt install -y openjdk-11-jdk
验证安装是否成功:
java -version
输出应包含openjdk version "11.x.x",表示安装完成。
Kafka通过ZooKeeper管理集群元数据(如Broker信息、Topic配置)。若使用Kafka 2.8+的KRaft模式(无ZooKeeper),可跳过此步。
从Apache官网下载稳定版(如3.6.3),解压至/opt目录:
wget https://downloads.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -xzf apache-zookeeper-3.6.3-bin.tar.gz
sudo mv apache-zookeeper-3.6.3-bin /opt/zookeeper
进入ZooKeeper配置目录,复制默认配置文件并修改:
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
sudo nano zoo.cfg
修改以下关键参数(取消注释并调整值):
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
sudo mkdir -p /var/lib/zookeeper
sudo chown -R $USER:$USER /var/lib/zookeeper # 授权当前用户
启动ZooKeeper服务:
/opt/zookeeper/bin/zkServer.sh start
验证是否启动成功(监听2181端口):
sudo netstat -tulnp | grep 2181
输出应显示2181/tcp处于LISTEN状态。
从Apache官网下载最新稳定版(如3.6.0),解压至/opt目录:
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -xzf kafka_2.13-3.6.0.tgz
sudo mv kafka_2.13-3.6.0 /opt/kafka
建议将Kafka用户添加至系统用户组(可选,提升安全性):
sudo groupadd kafka
sudo useradd -g kafka kafka
sudo chown -R kafka:kafka /opt/kafka
进入Kafka配置目录,编辑server.properties文件(核心配置):
cd /opt/kafka/config
sudo nano server.properties
修改以下关键参数:
# Broker唯一标识(单机版固定为0,集群版需唯一)
broker.id=0
# 监听地址(0.0.0.0允许所有IP访问,生产环境建议指定本机IP)
listeners=PLAINTEXT://:9092
# 对外暴露地址(客户端连接用,生产环境需替换为公网IP或域名)
advertised.listeners=PLAINTEXT://localhost:9092
# 日志存储目录(需提前创建并授权)
log.dirs=/opt/kafka/data
# ZooKeeper连接地址(传统模式必需,KRaft模式可删除此行)
zookeeper.connect=localhost:2181
# 默认分区数(可根据需求调整)
num.partitions=3
# 数据保留时间(小时,默认168小时=7天)
log.retention.hours=168
# 允许删除Topic(生产环境建议关闭)
delete.topic.enable=true
创建日志目录并授权:
sudo mkdir -p /opt/kafka/data
sudo chown -R kafka:kafka /opt/kafka/data
使用以下命令后台启动Kafka(指定配置文件路径):
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
检查Kafka是否监听9092端口:
sudo netstat -tulnp | grep 9092
输出应显示9092/tcp处于LISTEN状态,表示启动成功。
创建名为test的Topic(1个分区,1个副本):
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
验证Topic是否创建成功:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
输出应包含test。
启动生产者(向test Topic发送消息):
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
在终端输入消息(如Hello Kafka),按Ctrl+D结束输入。
启动消费者(从test Topic接收消息):
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
应能看到生产者发送的消息,表示Kafka功能正常。
为方便全局使用Kafka命令,可将Kafka的bin目录添加至PATH环境变量:
echo 'export PATH=$PATH:/opt/kafka/bin' >> ~/.bashrc
source ~/.bashrc
之后可直接在终端使用kafka-topics.sh、kafka-console-producer.sh等命令。
server.properties中的process.roles=broker,controller、controller.quorum.voters=0@localhost:9093等参数,无需启动ZooKeeper。适合生产环境简化架构。sudo ufw allow 9092/tcp
sudo ufw allow 2181/tcp
sudo ufw reload
/opt/kafka/data(Kafka日志)和/var/lib/zookeeper(ZooKeeper数据),避免数据丢失。