Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境
Kafka简介:
Apache Kafka是由LinkedIn开发并捐赠给Apache基金会的分布式流处理平台,现已成为实时数据管道和流应用领域的行业标准。它基于高吞吐、低延迟的设计理念,能够轻松处理每秒百万级消息传输,具备水平扩展、数据持久化、高容错等核心特性。Kafka广泛应用于日志聚合、实时监控、事件溯源、消息队列等场景,是大数据生态中连接传统数据库与流处理引擎(如Flink、Spark)的关键组件,被腾讯云、Netflix、Uber等顶级互联网企业深度应用于核心业务系统。
文章目录
- [**Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境**](#Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境)
- Kafka简介:
- **一、环境准备与安装**
- [1. 安装 Java(详细步骤)](#1. 安装 Java(详细步骤))
- [2. 下载并解压 Kafka](#2. 下载并解压 Kafka)
- **二、配置文件详解**
- [1. ZooKeeper 配置](#1. ZooKeeper 配置)
- [2. Kafka Broker 配置](#2. Kafka Broker 配置)
- **三、配置为系统服务(Systemd)**
- [1. 创建 `ZooKeeper` 服务文件](#1. 创建
ZooKeeper
服务文件)- [2. 创建 Kafka 服务文件](#2. 创建 Kafka 服务文件)
- [3. 创建专用用户和目录(增强安全性)](#3. 创建专用用户和目录(增强安全性))
- [4. 修改配置文件中的持久化路径](#4. 修改配置文件中的持久化路径)
- [5. 启用服务](#5. 启用服务)
- **四、验证服务*
- [1. 功能测试(详细命令)](#1. 功能测试(详细命令))
- **五、关键配置项深度解析**
- **六、故障排查指南**
- [1. 查看服务日志](#1. 查看服务日志)
- [2. 端口占用检查](#2. 端口占用检查)
- [3. 文件权限修复](#3. 文件权限修复)
一、环境准备与安装
1. 安装 Java(详细步骤)
shell
# CentOS
sudo yum install -y java-1.8.0-openjdk-devel
# Ubuntu
sudo apt update && sudo apt install -y openjdk-8-jdk
# 验证安装
java -version # 应输出类似 "openjdk version 1.8.0_382"



2. 下载并解压 Kafka
shell
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka # 建议移动到标准化目录
cd /opt/kafka
如果服务器网络不佳可在Kafka
官网手动下载并上传至服务器:
下载地址:Apache Kafka



二、配置文件详解
1. ZooKeeper 配置
config/zookeeper.properties
properties
# 数据存储目录(重要:生产环境需改为持久化路径,如 /var/lib/zookeeper)
dataDir=/tmp/zookeeper
# 客户端连接端口
clientPort=2181
# 最大客户端连接数(0 表示无限制)
maxClientCnxns=0
# 集群配置(单节点无需配置)
# server.1=zk-node1:2888:3888
# server.2=zk-node2:2888:3888

2. Kafka Broker 配置
config/server.properties
properties
# Broker 的唯一标识(集群中每个节点必须不同)
broker.id=0
# 监听地址和协议(生产环境建议用具体IP,如 PLAINTEXT://192.168.1.100:9092)
listeners=PLAINTEXT://:9092
# Kafka 日志存储目录(生产环境需改为持久化路径,如 /var/lib/kafka-logs)
log.dirs=/tmp/kafka-logs
# 每个 Topic 的默认分区数(影响并行度)
num.partitions=1
# ZooKeeper 连接地址(集群用逗号分隔,如 zk1:2181,zk2:2181)
zookeeper.connect=localhost:2181
# 其他重要参数(可选)
# 日志保留时间(小时)
log.retention.hours=168
# 单个日志文件最大大小(字节)
log.segment.bytes=1073741824
# 网络线程数
num.network.threads=3
# IO 线程数
num.io.threads=8

三、配置为系统服务(Systemd)
1. 创建 ZooKeeper
服务文件
shell
sudo vim /etc/systemd/system/zookeeper.service
内容如下:
ini
[Unit]
Description=Apache ZooKeeper Service
After=network.target
[Service]
Type=simple
User=kafka # 建议创建专用用户(见下方说明)
Group=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
2. 创建 Kafka 服务文件
shell
sudo vim /etc/systemd/system/kafka.service
内容如下:
ini
[Unit]
Description=Apache Kafka Service
After=zookeeper.service
[Service]
Type=simple
User=kafka
Group=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
3. 创建专用用户和目录(增强安全性)
shell
sudo useradd -r -s /bin/false kafka
sudo mkdir -p /var/lib/{zookeeper,kafka-logs}
sudo chown -R kafka:kafka /var/lib/{zookeeper,kafka-logs} /opt/kafka
4. 修改配置文件中的持久化路径
-
修改
zookeeper.properties
:propertiesdataDir=/var/lib/zookeeper
-
修改
server.properties
:propertieslog.dirs=/var/lib/kafka-logs
5. 启用服务
shell
sudo systemctl daemon-reload
sudo systemctl enable --now zookeeper
sudo systemctl enable --now kafka
# 检查状态
sudo systemctl status zookeeper kafka

*四、验证服务
1. 功能测试(详细命令)
shell
# 创建 Topic(明确指定分区和副本)
/opt/kafka/bin/kafka-topics.sh --create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 3 \
--replication-factor 1
# 生产消息(输入多行消息后按 Ctrl+C 退出)
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
# 消费消息(新终端执行)
/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--bootstrap-server localhost:9092 \
--from-beginning
测试效果如图:


五、关键配置项深度解析
配置项 | 作用说明 | 生产环境建议值 |
---|---|---|
broker.id |
Broker 的唯一标识,集群中必须唯一 | 数字递增(0,1,2...) |
listeners |
Broker 监听的网络地址和协议 | 使用服务器内网IP,如 PLAINTEXT://192.168.1.100:9092 |
log.dirs |
Kafka 数据存储目录,多个目录用逗号分隔可提升性能 | 挂载独立磁盘,如 /data/kafka-logs |
zookeeper.connect |
ZooKeeper 集群地址,格式为 host1:port1,host2:port2 |
至少3节点集群 |
num.partitions |
新建 Topic 的默认分区数(影响并行处理能力) | 根据业务需求设置(通常3-10) |
log.retention.hours |
消息保留时间 | 按业务需求(如 168=7天) |
default.replication.factor |
新建 Topic 的默认副本数(高可用关键) | 至少2,集群节点数≥副本数 |
六、故障排查指南
1. 查看服务日志
# ZooKeeper 日志
journalctl -u zookeeper -f
# Kafka 日志
journalctl -u kafka -f
2. 端口占用检查
shell
sudo netstat -tlnp | grep -E '2181|9092'
3. 文件权限修复
shll
sudo chown -R kafka:kafka /var/lib/{zookeeper,kafka-logs}