当前位置: 首页 > news >正文

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境

Kafka简介:

Apache Kafka是由LinkedIn开发并捐赠给Apache基金会的分布式流处理平台,现已成为实时数据管道和流应用领域的行业标准。它基于高吞吐、低延迟的设计理念,能够轻松处理每秒百万级消息传输,具备水平扩展、数据持久化、高容错等核心特性。Kafka广泛应用于日志聚合、实时监控、事件溯源、消息队列等场景,是大数据生态中连接传统数据库与流处理引擎(如Flink、Spark)的关键组件,被腾讯云、Netflix、Uber等顶级互联网企业深度应用于核心业务系统。

文章目录

    • **Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境**
      • Kafka简介:
      • **一、环境准备与安装**
        • 1. 安装 Java(详细步骤)
        • 2. 下载并解压 Kafka
      • **二、配置文件详解**
        • 1. ZooKeeper 配置
        • 2. Kafka Broker 配置
      • **三、配置为系统服务(Systemd)**
        • 1. 创建 `ZooKeeper` 服务文件
        • 2. 创建 Kafka 服务文件
        • 3. 创建专用用户和目录(增强安全性)
        • 4. 修改配置文件中的持久化路径
        • 5. 启用服务
      • **四、验证服务*
        • 1. 功能测试(详细命令)
      • **五、关键配置项深度解析**
      • **六、故障排查指南**
        • 1. 查看服务日志
        • 2. 端口占用检查
        • 3. 文件权限修复

一、环境准备与安装

1. 安装 Java(详细步骤)
# 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"

img_v3_02k2_52113089-36a0-4f01-8a1b-34fc2e5e655g

img_v3_02k2_dcc5330b-b557-4edc-900c-807ccc54997g

2. 下载并解压 Kafka
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

image-20250304153350958

img_v3_02k2_e958fbda-bb64-45b6-9426-c4d51ac9056g

img_v3_02k2_7e453cb2-d663-4812-8411-440231dfab7g


二、配置文件详解

1. ZooKeeper 配置

config/zookeeper.properties

# 数据存储目录(重要:生产环境需改为持久化路径,如 /var/lib/zookeeper)
dataDir=/tmp/zookeeper

# 客户端连接端口
clientPort=2181

# 最大客户端连接数(0 表示无限制)
maxClientCnxns=0

# 集群配置(单节点无需配置)
# server.1=zk-node1:2888:3888
# server.2=zk-node2:2888:3888

image-20250304151028285

2. Kafka Broker 配置

config/server.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

image-20250304151400265


三、配置为系统服务(Systemd)

1. 创建 ZooKeeper 服务文件
sudo vim /etc/systemd/system/zookeeper.service

内容如下:

[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 服务文件
sudo vim /etc/systemd/system/kafka.service

内容如下:

[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. 创建专用用户和目录(增强安全性)
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

    dataDir=/var/lib/zookeeper
    
  • 修改 server.properties

    log.dirs=/var/lib/kafka-logs
    
5. 启用服务
sudo systemctl daemon-reload
sudo systemctl enable --now zookeeper
sudo systemctl enable --now kafka

# 检查状态
sudo systemctl status zookeeper kafka

img_v3_02k2_6bdc2a6f-4766-4b1b-986b-21fdbda0eeeg


*四、验证服务

1. 功能测试(详细命令)
# 创建 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

测试效果如图:img_v3_02k2_2622cef6-4d6d-49d5-9789-f49dc8bee5eg

img_v3_02k2_f20fc217-645c-4c9e-ba17-7e7956bc14ag

img_v3_02k2_59014a5c-8571-4b5d-8063-76a6f0f60e8g


五、关键配置项深度解析

配置项作用说明生产环境建议值
broker.idBroker 的唯一标识,集群中必须唯一数字递增(0,1,2…)
listenersBroker 监听的网络地址和协议使用服务器内网IP,如 PLAINTEXT://192.168.1.100:9092
log.dirsKafka 数据存储目录,多个目录用逗号分隔可提升性能挂载独立磁盘,如 /data/kafka-logs
zookeeper.connectZooKeeper 集群地址,格式为 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. 端口占用检查
sudo netstat -tlnp | grep -E '2181|9092'
3. 文件权限修复
sudo chown -R kafka:kafka /var/lib/{zookeeper,kafka-logs}

相关文章:

  • 物联网系统中,多个感知设备采集的数据通过数据终端打包
  • 初始网络编程
  • 【C++设计模式】第四篇:建造者模式(Builder)
  • Android14 串口控制是能wifi adb实现简介
  • SQLAlchemy系列教程:理解SQLAlchemy元数据
  • 【AI深度学习基础】NumPy完全指南终极篇:核心功能与工程实践(含完整代码)
  • 论文阅读和代码实现EfficientDet(BiFPN)
  • 探索 Hutool - JSON:高效的 JSON 处理利器
  • DeepSeek:全栈开发者视角下的AI革命者
  • 【2025rust笔记】超详细,小白,rust基本语法
  • 数据结构第五节:排序
  • 知识图谱+智能问诊预诊系统vue+django+neo4j架构、带问诊历史
  • 在 Linux 系统上安装部署 Docker
  • 高频 SQL 50 题(基础版)_1084. 销售分析 III
  • mapbox基础,使用点类型geojson加载symbol符号图层,用于标注文字
  • Python 网络爬虫教程与案例详解
  • Linux跳过密码登录MySQL,实现重置mysql密码,导入导出数据库
  • Python实现一个类似MybatisPlus的简易SQL注解
  • 新装的conda 以及pycharm未能正确初始化,或conda环境变量配置错误问题解决!!!
  • 若依框架中的岗位与角色详解
  • 长沙网站开发流程/网站优化排名哪家好
  • 嘉兴网站备案去哪里/在线搜索引擎
  • 北京h5网页设计/合肥百度推广优化
  • 电脑网站建设在哪里/seo公司外包
  • 做网站云服务器装系统/网络营销的五个发展阶段
  • 网站用户体现好坏/网站推广推广