Ubuntu系统安装Kafka详细步骤
在开始安装前,请确保系统满足以下要求:
Kafka由Java编写,需先安装OpenJDK 8(或更高版本):
sudo apt update # 更新软件包列表
sudo apt install openjdk-8-jdk # 安装OpenJDK 8
java -version # 验证安装(显示Java版本信息即为成功)
Kafka依赖Zookeeper维护集群元数据(如Broker列表、Topic分区信息),需先部署Zookeeper:
选择稳定版本(如3.4.6、3.6.3),下载后解压至/usr/local目录:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz # 下载(以3.4.6为例)
tar xvfz zookeeper-3.4.6.tar.gz # 解压
sudo mv zookeeper-3.4.6 /usr/local/zookeeper # 移动至目标目录
创建配置文件zoo.cfg(Zookeeper核心配置),并设置数据目录:
sudo cat > /usr/local/zookeeper/conf/zoo.cfg << EOF
tickTime=2000 # 心跳间隔(毫秒)
dataDir=/var/lib/zookeeper # 数据存储目录(需手动创建)
clientPort=2181 # 客户端连接端口
EOF
sudo mkdir -p /var/lib/zookeeper # 创建数据目录
sudo chown -R $(whoami):$(whoami) /usr/local/zookeeper /var/lib/zookeeper # 授权当前用户(避免权限问题)
sudo /usr/local/zookeeper/bin/zkServer.sh start # 启动Zookeeper
sudo netstat -nap | grep 2181 # 验证端口(2181为Zookeeper默认端口)
若输出包含2181端口信息,则说明Zookeeper启动成功。
选择最新稳定版本(如3.5.2),下载后解压至/usr/local目录:
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz # 下载(以3.5.2为例)
tar -xzvf kafka_2.12-3.5.2.tgz # 解压
sudo mv kafka_2.12-3.5.2 /usr/local/kafka # 移动至目标目录
编辑server.properties(Kafka核心配置),修改以下关键参数:
sudo nano /usr/local/kafka/config/server.properties
修改内容如下(按需调整):
broker.id=0 # Broker唯一标识(集群中需唯一)
listeners=PLAINTEXT://localhost:9092 # 监听地址(本地测试用localhost,生产环境用服务器IP)
log.dirs=/tmp/kafka-logs # 日志存储目录(需手动创建)
zookeeper.connect=localhost:2181 # 连接的Zookeeper地址(与zoo.cfg中的clientPort一致)
sudo mkdir -p /tmp/kafka-logs # 创建日志目录
sudo chown -R $(whoami):$(whoami) /usr/local/kafka /tmp/kafka-logs # 授权当前用户
sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties # 后台启动(-daemon参数)
sudo netstat -tulnp | grep 9092 # 验证端口(9092为Kafka默认端口)
若输出包含9092端口信息,则说明Kafka启动成功。
创建名为test的Topic(1个分区、1个副本):
sudo /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
(注:Kafka 2.8.0及以上版本推荐使用--bootstrap-server替代旧版的--zookeeper)
sudo /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
若输出包含test,则说明Topic创建成功。
启动控制台生产者,向test Topic发送消息:
sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
输入任意消息(如Hello, Kafka on Ubuntu),按Ctrl+C退出。
启动控制台消费者,从test Topic接收消息:
sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
应能看到生产者发送的消息,按Ctrl+C退出。
将Kafka的bin目录添加至PATH环境变量,避免每次输入完整路径:
echo 'export KAFKA_HOME=/usr/local/kafka' >> ~/.bashrc # 添加KAFKA_HOME
echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc # 添加bin目录至PATH
source ~/.bashrc # 生效配置
之后可直接使用kafka-topics.sh、kafka-console-producer.sh等命令(无需sudo /usr/local/kafka/bin/前缀)。
advertised.listeners(集群节点间通信地址);