Kafka单机版安装部署

目录

  • 1.1、概述
  • 1.2、系统环境
  • 1.3、ZooKeeper的作用
  • 1.4、部署流程
    • 1.4.1、下载安装包
    • 1.4.2、解压文件
    • 1.4.3、创建日志目录
    • 1.4.4、配置Kafka
    • 1.4.5、启动Kafka服务
    • 1.4.6、启动成功验证
  • 1.5、创建Topic测试
  • 1.6、消息生产与消费测试
    • 1.6.1、启动生产者
    • 1.6.2、启动消费者

1.1、概述

        Kafka的搭建模式包括单节点单Broker部署、单节点多Broker部署、集群部署(多节点多Broker),分别适用于不同的场景和需求,从简单的单节点测试环境到复杂的多节点高可用生产环境。在实际部署时,应根据系统的可用性要求、数据量、并发负载等因素选择合适的部署模式。

  • 单节点单Broker部署
            在这种部署方式中,Kafka的所有服务都运行在单个节点上,包括单个Kafka Broker。这种部署方式适用于开发或测试环境,但在生产环境中可能不是最佳选择,因为它不具备高可用性和负载均衡的能力。
  • 单节点多Broker部署
            这种部署方式在单个节点上运行多个Kafka Broker实例。每个Broker实例有不同的配置文件,通常使用不同的端口号和日志目录。这种方式在单台物理机或虚拟机上提供了更好的资源利用,但仍然不具备高可用性,因为所有服务仍然依赖于单个节点的稳定性。
  • 集群部署(多节点多Broker)
            在集群部署中,Kafka Broker分布在多个物理或虚拟节点上。每个Broker实例通常都有自己的配置文件,并连接到一个共同的ZooKeeper集群,以协调和同步集群内的信息。集群部署方式提供了高可用性、容错能力和水平扩展性,是生产环境中的首选部署方式。

1.2、系统环境

        Kafka强依赖ZooKeeper,如果想要使用Kafka,就必须安装ZooKeeper,ZooKeeper的安装教程请参考Zookeeper单机版安装部署这篇博文。Kafka中的消费偏置信息、kafka集群、topic信息会被存储在ZooKeeper中。有人可能会说我在使用Kafka的时候就没有安装ZooKeeper,那是因为Kafka内置了一个ZooKeeper,一般我们不使用它。具体系统环境如下:

环境名称版本号
操作系统CentOS Linux release 8.4.2105
JDK17.0.7
ZooKeeper3.8.4
Kafka3.7.2

1.3、ZooKeeper的作用

        Zookeeper在Kafka中扮演着关键的角色,它提供了分布式协调和配置管理服务,对于Kafka集群的正常运行和高可用性至关重要。Zookeeper在Kafka中的作用主要包括:

  • Leader选举
            Zookeeper负责管理Kafka集群中的Broker选举出Leader的过程。当集群中某个Broker作为Leader发生故障时,Zookeeper会协调其他Broker选举新的Leader,以保证Kafka集群的稳定运行。
  • 配置管理
            Zookeeper存储了Kafka集群的关键元数据,包括主题配置信息、分区信息等。当这些配置需要更新时,Zookeeper确保所有Broker都可以获取到最新的配置信息。
  • 同步
            Zookeeper在Kafka的分布式环境中保证数据的一致性。它管理Kafka集群中的所有Broker,确保它们的状态同步。
  • 节点管理
            Zookeeper跟踪Kafka集群中每个节点的状态和信息。这包括节点加入或离开集群的情况,以及节点的健康状况。
  • 注册并监控Broker,调整负载均衡
            Kafka的每个Broker在启动时,都会在Zookeeper中注册,告诉Zookeeper其Broker ID。当节点失效时,Zookeeper会删除该节点,从而监控整个集群Broker的变化,并能够及时调整负载均衡。
  • 协调生产者和消费者的订阅关系
            Zookeeper帮助Kafka在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者和消费者的负载均衡。
  • 偏移量管理
            在Kafka中,Zookeeper用于提交偏移量。这样,即使节点在任何情况下失败了,它也可以从之前提交的偏移量中恢复。
  • 其他活动
            Zookeeper还执行其他活动,如leader检测、分布式同步、配置管理、识别新节点何时离开或连接、集群、节点实时状态等。

1.4、部署流程

        本文将在操作系统为CentOS Linux release 8.4.2105、Java环境为JDK17.0.7、ZooKeeper为3.8.4版本的服务器上部署Kafka3.7.2版本,部署架构如下图所示。具体流程如下:
部署架构

1.4.1、下载安装包

        用户可以自行在Apache Kafka官网 ,选择最新稳定版本进行下载。在国内,从官网的下载速度较慢,可以从博主提供的资源地址下载:资源下载,也可以选择国内镜像站下载,比如阿里镜像站:阿里镜像 。官网下载和阿里镜像下载如下:
官网下载
阿里镜像
        下载文件一般为一个.tar.gz或.zip格式的压缩包,例如 kafka_2.13-4.0.0.tgz。下载后将安装包保存在服务器上的自定义目录下即可,比如:/usr/local/Kafka。

1.4.2、解压文件

        对于.tar.gz文件,可以使用以下命令进行文件解压。命令如下:

tar -xvzf kafka_2.13-3.7.2.tgz

        解压后,将会生成一个名为 kafka_2.13-3.7.2的目录,该目录即为Kafka的安装目录。为了方便配置,可以重命名 Kafka 安装目录。解压后的目录结构如下:
目录结构

1.4.3、创建日志目录

        根据Kafka的配置要求,需要创建一个目录用于存放日志。命令如下:

mkdir /data/kafka/logs

1.4.4、配置Kafka

        进入kafka_2.13-3.7.2/config目录,使用文本编辑器(如 vi、nano 或 emacs)打开server.properties文件并进行如下配置:# 数据存储路径 log.dirs=/data/kafka/logs # 监听地址 listeners=PLAINTEXT://:9092 # ZooKeeper 地址 zookeeper.connect=localhost:2181。最终配置文件如下:
配置文件

1.4.5、启动Kafka服务

        启动服务时先要启动ZooKeeper,再启动Kafka;关闭服务时先要关闭Kafka,在关闭ZooKeeper。启动Kafka时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-server-start.sh ../config/server.properties 命令启动 Kafka服务,启动成功后的效果如下:
启动成功

1.4.6、启动成功验证

        出现上述界面后,但是并不能保证Kafka已经启动成功,输入jps查看进程,如果可以看到Kafka进程,表示启动成功。具体如下:
Kafka进程

1.5、创建Topic测试

        创建Topic时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 命令创建一个名为test-topic的主题,创建成功后的效果如下:
创建Topic成功
        也可以通过./kafka-topics.sh --list --bootstrap-server localhost:9092命令查看所有的主题列表,具体如下所示:
主题列表

1.6、消息生产与消费测试

1.6.1、启动生产者

        启动生产者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092命令后就可以向名为test-topic的主题中生产消息,效果如下:
生产消息

1.6.2、启动消费者

        启动消费者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092命令后就可以消费名为test-topic的主题中的消息,效果如下:
消费消息

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

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

相关文章

【C++设计模式之Observer观察者模式】

Observer观察者模式 模式定义动机(Motivation)结构(Structure)应用场景一(气象站)实现步骤1.定义观察者接口2.定义被观察者(主题)接口3.实现具体被观察者对象(气象站)4.实现具体观察者(例如:显示屏)5.main.cpp中使用示例6.输出结果7. 关键点 …

资产月报怎么填?资产月报填报指南

资产月报是企业对固定资产进行定期检查和管理的重要工具,它能够帮助管理者了解资产的使用情况、维护状况和财务状况,从而为资产的优化配置和决策提供依据。填写资产月报时,除了填报内容外,还需要注意格式的规范性和数据的准确性。…

UG471 之 SelectIO 逻辑资源

背景 《ug471》介绍了Xilinx 7 系列 SelectIO 的输入/输出特性及逻辑资源的相关内容。 第 1 章《SelectIO Resources》介绍了输出驱动器和输入接收器的电气特性,并通过大量实例解析了各类标准接口的实现。 第 2 章《SelectIO Logic Resources》介绍了输入输出数据…

C++ 内存泄漏相关

ASAN 参考链接 https://blog.csdn.net/wonengguwozai/article/details/129593186https://www.cnblogs.com/greatsql/p/16256926.htmlhttps://zhuanlan.zhihu.com/p/700505587小demo // leak.c #include <stdio.h> #include <stdlib.h> #include <string.h>…

计算人声录音后电平的大小(dB SPL->dBFS)

计算人声录音后电平的大小 这里笔记记录一下&#xff0c;怎么计算已知大小的声音&#xff0c;经过麦克风、声卡录制后软件内录得的音量电平值。&#xff08;文章最后将计算过程整理为Python代码&#xff0c;方便复用&#xff09; 假设用正常说话的声音大小65dB&#xff08;SP…

【MySQL数据库】C/C++连接数据库

MySQL要想在C/C下使用&#xff0c;就必须要有 MySQL 提供的头文件和相关的库。 在Ubuntu系统上&#xff0c;使用 apt install mysql-server 安装MySQL服务器后&#xff0c;仅安装了MySQL数据库服务本身&#xff0c;并没有安装MySQL开发所需的库和头文件。因此&#xff0c;在尝试…

Kubernetes调度策略深度解析:NodeSelector与NodeAffinity的正确打开方式

在Kubernetes集群管理中&#xff0c;如何精准控制Pod的落点&#xff1f;本文将深入解析两大核心调度策略的差异&#xff0c;并通过生产案例教你做出正确选择。 一、基础概念快速理解 1.1 NodeSelector&#xff08;节点选择器&#xff09; 核心机制&#xff1a;通过标签硬匹配…

Golang的linux运行环境的安装与配置

很多新手在学go时&#xff0c;linux下的配置环境一头雾水&#xff0c;总结下&#xff0c;可供参考&#xff01; --------------------------------------Golang的运行环境的安装与配置-------------------------------------- 将压缩包放在/home/tools/下 解压 tar -zxvf g…

自定义实现elementui的锚点

背景 前不久有个需求&#xff0c;上半部分是el-step步骤条&#xff0c;下半部分是一些文字说明&#xff0c;需要实现点击步骤条中某个步骤自定义定位到对应部分的文字说明&#xff0c;同时滚动内容区域的时候还要自动选中对应区域的步骤。element-ui-plus的有锚点这个组件&…

Oracle Fusion常用表

模块表名表描述字段说明sodoo_headers_all销售订单头表sodoo_lines_all销售订单行表sodoo_fulfill_lines_all销售订单明细行表popo_headers_all采购订单头表popo_lines_all采购订单行表popo_line_locations_all采购订单分配表popo_distributions_all采购订单发运表invEGP_SYSTE…

面试常问系列(一)-神经网络参数初始化-之-softmax

背景 本文内容还是对之前关于面试题transformer的一个延伸&#xff0c;详细讲解一下softmax 面试常问系列(二)-神经网络参数初始化之自注意力机制-CSDN博客 Softmax函数的梯度特性与输入值的幅度密切相关&#xff0c;这是Transformer中自注意力机制需要缩放点积结果的关键原…

5.9-selcct_poll_epoll 和 reactor 的模拟实现

5.9-select_poll_epoll 本文演示 select 等 io 多路复用函数的应用方法&#xff0c;函数具体介绍可以参考我过去写的博客。 先绑定监听的文件描述符 int sockfd socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serveraddr; memset(&serveraddr, 0, sizeof(struc…

Python基础语法(上)

常量和表达式 我们可以使用python来进行一些 - * / %的一些运算 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) python中的运算规则与数学当中一致&#xff0c;先乘除后加减&#xff0c;有括号的先计算括号里面的。 形如 1 2 - 3 这样是算式, 在编程语言中称为 表达式,…

数图闪耀2025深圳CCFA中国零售博览会:AI+零售数字化解决方案引发现场热潮

展会时间&#xff1a;2025年5月8日—10日 地点&#xff1a;深圳国际会展中心&#xff08;宝安新馆&#xff09; 【深圳讯】5月8日&#xff0c;亚洲规模最大的零售行业盛会——2025 CCFA中国零售博览会在深圳盛大开幕。本届展会汇聚全球25个国家和地区的900余家参展商&#xff…

方法:批量识别图片区域文字并重命名,批量识别指定区域内容改名,基于QT和阿里云的实现方案,详细方法

基于QT和阿里云的图片区域文字识别与批量重命名方案 项目场景 ​​企业档案管理​​:批量处理扫描合同、发票等文档,根据编号或关键信息自动重命名文件​​医疗影像管理​​:识别X光、CT等医学影像中的患者信息,按姓名+检查日期重命名​​电商订单处理​​:从订单截图中提…

Mybatis解决以某个字段存在,批量更新,不存在批量插入(高效)(一)

背景 在开发企业级应用时&#xff0c;我们经常需要处理批量数据的插入和更新操作。传统的逐条处理方式性能低下&#xff0c;而简单的REPLACE INTO或INSERT ... ON DUPLICATE KEY UPDATE在某些场景下又不够灵活。本文将介绍一种基于临时表的高效批量插入/更新方案&#xff0c;解…

JVM、JRE、JDK的区别

JVM JVM全称Java虚拟机(Java Virtual Machine, JVM),它是运行java字节码的虚拟机&#xff0c;JVM针对不同的系统有不同的实现&#xff0c;目的运行相同的字节码有同样的结果&#xff0c;JVM是“一次编译&#xff0c;到处运行”实现的关键。如下不同的编程语言编译生成字节码文…

神经元和神经网络定义

在深度学习中&#xff0c;神经元和神经网络是构成神经网络模型的基本元素。让我们从基础开始&#xff0c;逐步解释它们的含义和作用。 1️⃣ 神经元是什么&#xff1f; 神经元是神经网络中的基本计算单元&#xff0c;灵感来自于生物神经系统中的神经元。每个人的脑中有数以亿…

CDGP重点知识梳理

写在前面 全文11700字,共82个重点知识 目 录 考点分布 考试要求 第一章 数据管理-5%

Ubuntu 22.04 安装配置远程桌面环境指南

在云服务器或远程主机上安装图形化桌面环境,可以极大地提升管理效率和用户体验。本文将详细介绍如何在 Ubuntu 22.04 (Jammy Jellyfish) 系统上安装和配置 Xfce4 桌面环境,并通过 VNC 实现远程访问。 系统环境 操作系统:Ubuntu 22.04 LTS (Jammy Jellyfish)架构:AMD64安装…