【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 testLast 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=1073741824Topic: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 图形API(21)逐像素操作

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在OpenCV的G-API模块中&#xff0c;逐像素操作指的是对图像中的每个像素单独进行处理的操作。这些操作可以通过G-API的计算图&#xff08;Graph …

CubeMX配置STM32VET6实现网口通信(无操作系统版-附源码)

下面是使用CubeMX配置STM32F407VET6,实现以太网通讯(PHY芯片为LAN8720)的具体步骤总结: 一、硬件连接方式: 硬件原理图: 使用外部晶振为PHY芯片提供时钟。 STM32F407VET6 与 LAN8720 采用 RMII 模式连接。STM32F407VET6引脚功能(RMII)LAN8720引脚PA1ETH_REF_CLKREF_CL…

Android Compose 中获取和使用 Context 的完整指南

在 Android Jetpack Compose 中&#xff0c;虽然大多数 UI 组件不再需要直接使用 Context&#xff0c;但有时你仍然需要访问它来执行一些 Android 平台特定的操作。以下是几种在 Compose 中获取和使用 Context 的方法&#xff1a; 1. 使用 LocalContext 这是 Compose 中最常用…

在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置

你遇到的大部分ubuntu中配置hadoop的问题这里都有解决方法&#xff01;&#xff01;&#xff01;&#xff08;近10000字&#xff09; 概要 在Docker虚拟容器环境下&#xff0c;进行Hadoop-3.2.2分布式集群环境的配置与安装&#xff0c;完成基于Yarn模式的一个Master节点、两个…

PID灯控算法

根据代码分析&#xff0c;以下是针对PID算法和光敏传感器系统的优化建议&#xff0c;分为算法优化、代码结构优化和系统级优化三部分&#xff1a; 一、PID算法优化 1. 增量式PID 输出平滑 // 修改PID计算函数 uint16_t PID_calculation_fun(void) {if(PID_Str_Val.Tdata >…

文件映射mmap与管道文件

在用户态申请内存&#xff0c;内存内容和磁盘内容建立一一映射 读写内存等价于读写磁盘 支持随机访问 简单来说&#xff0c;把磁盘里的数据与内存的用户态建立一一映射关系&#xff0c;让读写内存等价于读写磁盘&#xff0c;支持随机访问。 管道文件&#xff1a;进程间通信机…

在 Java 中调用 ChatGPT API 并实现流式接收(Server-Sent Events, SSE)

文章目录 简介OkHttp 流式获取 GPT 响应通过 SSE 流式推送前端后端代码消息实体接口接口实现数据推送给前端 前端代码创建 sseClient.jsvue3代码 优化后端代码 简介 用过 ChatGPT 的伙伴应该想过自己通过调用ChatGPT官网提供的接口来实现一个自己的问答机器人&#xff0c;但是…

硬盘分区格式之GPT(GUID Partition Table)笔记250407

硬盘分区格式之GPT&#xff08;GUID Partition Table&#xff09;笔记250407 GPT&#xff08;GUID Partition Table&#xff09;硬盘分区格式详解 GPT&#xff08;GUID Partition Table&#xff09;是替代传统 MBR 的现代分区方案&#xff0c;专为 UEFI&#xff08;统一可扩展固…

Vite环境下解决跨域问题

在 Vite 开发环境中&#xff0c;可以通过配置代理来解决跨域问题。以下是具体步骤&#xff1a; 在项目根目录下找到 vite.config.js 文件&#xff1a;如果没有&#xff0c;则需要创建一个。配置代理&#xff1a;在 vite.config.js 文件中&#xff0c;使用 server.proxy 选项来…

交换机与ARP

交换机与 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09; 的关系主要体现在 局域网&#xff08;LAN&#xff09;内设备通信的地址解析与数据帧转发 过程中。以下是二者的核心关联&#xff1a; 1. 基本角色 交换机&#xff1a;工作在 数据链…

【Spring】小白速通AOP-日志记录Demo

这篇文章我将通过一个最常用的AOP场景-方法调用日志记录&#xff0c;带你彻底理解AOP的使用。例子使用Spring BootSpring AOP实现。 如果对你有帮助可以点个赞和关注。谢谢大家的支持&#xff01;&#xff01; 一、Demo实操步骤&#xff1a; 1.首先添加Maven依赖 <!-- Sp…

git功能点管理

需求&#xff1a; 功能模块1 已经完成&#xff0c;已经提交并推送到远程&#xff0c;准备交给测试。功能模块2 已经完成&#xff0c;但不提交给测试&#xff0c;继续开发。功能模块3 正在开发中。 管理流程&#xff1a; 创建并开发功能模块1&#xff1a; git checkout main…

QGIS实战系列(六):进阶应用篇——Python 脚本自动化与三维可视化

欢迎来到“QGIS实战系列”的第六期!在前几期中,我们从基础操作到插件应用逐步提升了 QGIS 技能。这一篇,我们将迈入进阶领域,探索如何用 Python 脚本实现自动化,以及如何创建三维可视化效果,让你的 GIS 项目更高效、更立体。 第一步:Python 脚本自动化 QGIS 内置了 Py…

高德地图 3D 渲染-区域纹理图添加

引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…

ffmpeg视频转码相关

ffmpeg视频转码相关 简介参数 实战举栗子获取视频时长视频转码mp4文件转为hls m3u8 ts等文件图片转视频抽取视频第一帧获取基本信息 转码日志输出详解转码耗时测试 简介 FFmpeg 是领先的多媒体框架&#xff0c;能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人…

【ISP】HDR技术中Sub-Pixel与DOL的对比分析

一、原理对比 Sub-Pixel&#xff08;空间域HDR&#xff09; • 核心机制&#xff1a;在单个像素内集成一大一小两个子像素&#xff08;如LPD和SPD&#xff09;&#xff0c;利用其物理特性差异&#xff08;灵敏度、满阱容量&#xff09;同时捕捉不同动态范围的信号。 ◦ 大像素&…

Vulnhub-IMF靶机

本篇文章旨在为网络安全渗透测试靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列IMF靶机有一定的了解 一、信息收集阶段 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/imf-1,162/ 因为靶机为本地部署虚拟机网段&#xff0c;查看dhcp地址池设置。得…

Linux内核中TCP协议栈的实现:tcp_close函数的深度剖析

引言 TCP(传输控制协议)作为互联网协议族中的核心协议之一,负责在不可靠的网络层之上提供可靠的、面向连接的字节流服务。Linux内核中的TCP协议栈实现了TCP协议的全部功能,包括连接建立、数据传输、流量控制、拥塞控制以及连接关闭等。本文将深入分析Linux内核中tcp_close…

java+postgresql+swagger-多表关联insert操作(七)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; [{"custstoreName":"swagger-测试经销商01","customerName":"swagger-测试客户01","propertyNo":"swaggertest01",&quo…

R语言——绘制生命曲线图(细胞因子IL5)

绘制生命曲线图&#xff08;根据细胞因子&#xff09; 说明流程代码加载包读取Excel文件清理数据重命名列名处理IL-5中的"<"符号 - 替换为检测下限的一半首先找出所有包含"<"的值检查缺失移除缺失值根据IL-5中位数将患者分为高低两组 创建生存对象拟…