【Kafka基础】单机安装与配置指南,从零搭建环境

学习Kafka,掌握Kafka的单机部署是理解其分布式特性的第一步。本文将手把手带你完成Kafka单机环境的安装、配置及基础验证,涵盖常见问题排查技巧。

1 环境准备

1.1 系统要求

  • 操作系统:CentOS 7.9
  • 依赖组件:JDK 8+(Kafka 2.8+需要JDK11+)、ZooKeeper(Kafka 2.8+内置ZooKeeper,可跳过独立安装)
  • 资源建议:至少2核CPU,4GB内存,磁盘空间 ≥ 10GB(日志保留默认7天)

    检查Java版本(示例为CentOS)

    [root@node6 kafka]# java -version
    java version "11.0.25" 2024-10-15 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.25+9-LTS-256)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.25+9-LTS-256, mixed mode)
    [root@node6 kafka]#

2 安装Kafka

2.1 下载与解压

下载地址: Index of /dist/kafka/3.6.0

复制代码
tar -zxvf kafka_2.13-3.6.0.tgz -C /export/home/kafka/

2.2 目录结构说明

复制代码
       [root@node6 kafka_2.13-3.6.0]# tree -L 1 
.
├── bin/            # 【核心】Kafka 管理脚本(启动/停止/运维)
├── config/         # 【核心】配置文件(服务端、客户端、ZooKeeper)
├── libs/           # 【核心】Kafka 运行依赖的 Java 库(JAR 文件)
├── logs/           # 【运行时生成】日志文件(服务启动后自动生成)
├── licenses/       # 第三方依赖的许可证文件
├── site-docs/      # HTML 格式的官方文档(本地版)
├── LICENSE         # Apache 2.0 许可证文件
└── NOTICE          # 项目版权声明文件

6 directories, 2 files
[root@node6 kafka_2.13-3.6.0]# 

3 配置Kafka

3.1 单机模式配置

复制代码
# 编辑config/server.properties核心参数:备份文件并添加如下内容
cp config/server.properties config/server.properties_bak
cat >config/server.properties<<EOF
# Broker唯一ID(单机保持默认即可)
broker.id=0

# 监听地址(重要!改成实际IP或0.0.0.0)
listeners=PLAINTEXT://192.168.10.35:9092

# 日志存储目录(确保有写入权限)
log.dirs=/export/home/kafka/kafka_2.13-3.6.0/logs

# ZooKeeper连接地址(单机默认)
zookeeper.connect=localhost:2181

# 每个Topic的默认分区数(根据需求调整)
num.partitions=1

# 日志保留时间(小时)
log.retention.hours=168

# 单个日志段最大大小(默认1GB)
log.segment.bytes=1073741824

# 网络线程数(建议CPU核数)
num.network.threads=2

# IO线程数(建议2*CPU核数)
num.io.threads=4
EOF

3.2 启动内置ZooKeeper

复制代码
# 启动内置ZooKeeper(前台运行,观察日志)
/export/home/kafka/kafka_2.13-3.6.0/bin/zookeeper-server-start.sh /export/home/kafka/kafka_2.13-3.6.0/config/zookeeper.properties

# 新终端窗口启动Kafka
/export/home/kafka/kafka_2.13-3.6.0/bin/kafka-server-start.sh /export/home/kafka/kafka_2.13-3.6.0/config/server.properties

4 验证服务

4.1 创建Topic

复制代码
# 创建名为test的Topic,1分区1副本
/export/home/kafka/kafka_2.13-3.6.0/bin/kafka-topics.sh --create \
  --bootstrap-server 192.168.10.35:9092 \
  --replication-factor 1 \
  --partitions 1 \
  --topic test
  
Last login: Thu Apr  3 21:54:04 2025 from 192.168.10.2
[root@node6 ~]# /export/home/kafka/kafka_2.13-3.6.0/bin/kafka-topics.sh --create \
>   --bootstrap-server 192.168.10.35:9092 \
>   --replication-factor 1 \
>   --partitions 1 \
>   --topic test
Created topic test.
[root@node6 ~]# 

# 查看Topic详情
/export/home/kafka/kafka_2.13-3.6.0/bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.10.35:9092

[root@node6 ~]# /export/home/kafka/kafka_2.13-3.6.0/bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.10.35:9092
Topic: test     TopicId: ripsPks_T2Od3POsa7e5LQ PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0
[root@node6 ~]# 

4.2 生产与消费消息

复制代码
# 启动生产者(输入消息后按Ctrl+C退出)
/export/home/kafka/kafka_2.13-3.6.0/bin/kafka-console-producer.sh \
  --bootstrap-server 192.168.10.35:9092 \
  --topic test

# 新终端启动消费者(从头开始消费)
/export/home/kafka/kafka_2.13-3.6.0/bin/kafka-console-consumer.sh \
  --bootstrap-server 192.168.10.35:9092 \
  --topic test \
  --from-beginning

5 常见问题排查

5.1. 端口冲突

  • 错误现象:Address already in use
  • 解决方案

    检查端口占用

    netstat -tulnp | grep 9092

    终止冲突进程或修改Kafka监听端口

5.2 磁盘空间不足

  • 日志清理

    手动删除旧日志(谨慎操作!)

    rm -rf /export/home/kafka/kafka_2.13-3.6.0/logs/test-0/*

    或配置自动清理(server.properties)

    log.retention.hours=168 # 保留7天

5.3 ZooKeeper连接失败

  • 检查ZK状态
    netstat -tulnp | grep 2181
相关推荐
Wang's Blog1 小时前
RabbitMQ: 消息交换机制的核心原理与实践指南之基于 AMQP 协议的系统设计与工程实现
分布式·rabbitmq
狮恒1 小时前
OpenHarmony Flutter 分布式音视频:跨设备流传输与实时协同交互方案
分布式·flutter·wpf·openharmony
狮恒2 小时前
OpenHarmony Flutter 分布式安全与隐私保护:跨设备可信交互与数据防泄漏方案
分布式·flutter·wpf·openharmony
ha_lydms3 小时前
Spark函数
大数据·分布式·spark
狮恒4 小时前
OpenHarmony Flutter 分布式任务调度:跨设备资源协同与负载均衡方案
分布式·flutter·wpf·openharmony
豫狮恒6 小时前
OpenHarmony Flutter 分布式权限管理:跨设备可信访问与权限协同方案
分布式·flutter·wpf·openharmony
TiDB 社区干货传送门6 小时前
“医疗专业应用+分布式数据底座”:平凯数据库与金唐软件全链路赋能医疗国产化与数字化转型
数据库·分布式
码界奇点6 小时前
基于微服务架构的分布式量化交易系统设计与实现
分布式·微服务·架构·车载系统·毕业设计·源代码管理
小白|7 小时前
Flutter 与 OpenHarmony 深度融合:实现分布式文件共享与跨设备协同编辑系统
分布式·flutter·wpf
敲上瘾7 小时前
MySQL主从集群解析:从原理到Docker实战部署
android·数据库·分布式·mysql·docker·数据库架构