Kafka技术详解[2]: 环境安装

目录

环境安装

安装Java8(略)

安装Kafka

启动ZooKeeper

启动Kafka

消息主题

创建主题

查询主题

修改主题

删除主题


环境安装

作为一款开源分布式事件流处理平台,Kafka的分布式软件环境安装相对复杂,这不利于初学者的学习和练习。因此,我们首先搭建一个简单的Windows单机环境,以便初学者能够快速掌握Kafka的基本原理和用法。在后续博客中,我们将深入学习Kafka在生产环境中的安装和使用。

安装Java8(略)

当前Java软件开发的主流版本是Java 8,而Kafka 3.x官方建议使用Java 11,但Java 8仍然适用。未来Kafka 4.x版本将会完全弃用Java 8。鉴于我们当前学习的是Kafka 3.6.1版本,因此使用Java 8即可,无需升级。由于Kafka的绝大多数代码都是用Scala编写,并且Scala基于Java开发,Kafka可以在JVM上直接运行,因此无需安装其他软件。假设您已经安装了Java 8并配置了基本的环境变量,故此处安装过程省略。

安装Kafka
  • 下载软件安装包:kafka_2.12-3.6.1.tgz,下载地址:Apache Kafka

    • 3.6.1 是 Kafka 软件的版本,截至2023年12月24日,Kafka 最新版本为3.6.1。
    • 2.12 是对应的 Scala 开发语言版本,Scala 2.12 与 Java 8 兼容,可以直接使用。
    • tgz 是 Linux 系统中常见的压缩文件格式,类似于 Windows 系统中的 ziprar 格式,在 Windows 环境中可以直接使用压缩工具进行解压缩。
  • 解压文件:kafka_2.12-3.6.1.tgz,解压目录为非系统盘的根目录,例如 E:/

为了访问方便,可以将解压后的文件目录改为 kafka,更改后的文件目录结构如下:

bin/
├── linux
│   └── (Linux 系统下可执行脚本文件)
├── windows
│   └── (Windows 系统下可执行脚本文件)
config/
├── (配置文件)
libs/
├── (依赖类库)
licenses/
├── (许可信息)
site-docs/
├── (文档)
logs/
└── (服务日志)
启动ZooKeeper

当前版本的 Kafka 仍依赖 ZooKeeper 进行多节点协调调度,因此启动 Kafka 之前需先启动 ZooKeeper。但 Kafka 内置了 ZooKeeper,无需额外安装,直接调用脚本命令启动即可。

  • 进入 Kafka 解压缩文件夹的 config 目录,修改 zookeeper.properties 配置文件:

    bash 复制代码
    # the directory where the snapshot is stored.
    # 修改 dataDir 配置,用于设置 ZooKeeper 数据存储位置,该路径如果不存在会自动创建。
    dataDir=E:/kafka_2.12-3.6.1/data/zk
  • 打开 DOS 窗口,进入 E:/kafka_2.12-3.6.1/bin/windows 目录。

  • 因为本章节演示的是 Windows 环境下 Kafka 的安装和使用,所以启动 ZooKeeper 软件的指令为 Windows 环境下的 .bat 批处理文件。调用启动指令时,需要传递配置文件的路径:

    bash 复制代码
    # 因为当前目录为 windows,所以需要通过相对路径找到 zookeeper 的配置文件。
    zookeeper-server-start.bat ../../config/zookeeper.properties
  • 出现如下界面,ZooKeeper 启动成功。

  • 为了操作方便,也可以在 Kafka 解压缩后的目录中创建脚本文件 zk.cmd

    bash 复制代码
    # 调用启动命令,且同时指定配置文件。
    call bin/windows/zookeeper-server-start.bat config/zookeeper.properties
启动Kafka
  • 进入 Kafka 解压缩文件夹的 config 目录,修改 server.properties 配置文件:

    # Listener name, hostname and port the broker will advertise to clients.
    # If not set, it uses the value for "listeners".
    # 客户端访问 Kafka 服务器时,默认连接的服务为本机的端口 9092,如果想要改变,可以修改如下配置
    # 此处我们不做任何改变,默认即可
    #advertised.listeners=PLAINTEXT://your.host.name:9092
    
    # A comma separated list of directories under which to store log files
    # 配置 Kafka 数据的存放位置,如果文件目录不存在,会自动生成。
    log.dirs=E:/kafka_2.12-3.6.1/data/kafka
    
  • 打开 DOS 窗口,进入 E:/kafka_2.12-3.6.1/bin/windows 目录。

  • 调用启动指令,传递配置文件的路径:

    # 因为当前目录为 windows,所以需要通过相对路径找到 kafka 的配置文件。
    kafka-server-start.bat ../../config/server.properties
    
  • 出现如下界面,Kafka 启动成功。

  • 为了操作方便,也可以在 Kafka 解压缩后的目录中创建脚本文件 kfk.cmd

    # 调用启动命令,且同时指定配置文件。
    call bin/windows/kafka-server-start.bat config/server.properties
    
  • 在 DOS 窗口中输入 jps 指令,查看当前启动的软件进程:

    这里名称为 QuorumPeerMain 的就是 ZooKeeper 软件进程,名称为 Kafka 的就是 Kafka 系统进程。此时,说明 Kafka 已经可以正常使用了。
    

消息主题

在消息发布/订阅(Publish/Subscribe)模型中,为了可以让消费者对感兴趣的消息进行消费,而不是对所有数据进行消费,定义了主题(Topic)的概念。即将不同的消息进行分类,分成不同的主题(Topic),然后消息生产者在生成消息时,会向指定的主题(Topic)中发送,而消息消费者也可以订阅自己感兴趣的主题(Topic)并从中获取消息。

有很多方式可以操作 Kafka 消息中的主题(Topic):命令行、第三方工具、Java API、自动创建。对于初学者而言,掌握基本的命令行操作是必要的。因此,接下来我们采用命令行进行操作。

创建主题
  • 启动 ZooKeeper,Kafka 服务进程(略)

  • 打开 DOS 窗口,进入 E:/kafka_2.12-3.6.1/bin/windows 目录。

  • DOS 窗口输入指令,创建主题:

    # Kafka 是通过 kafka-topics.bat 指令文件进行消息主题操作的。其中包含了对主题的查询、创建、删除等功能。
    # --bootstrap-server : 把当前的 DOS 窗口当成 Kafka 的客户端,那么进行操作前,就需要连接服务器,这里的参数表示服务器的连接方式,因为我们在本机启动 Kafka 服务进程,且 Kafka 默认端口为 9092,所以此处,后面接的参数值为 localhost:9092,用空格隔开。
    # --create : 表示对主题的创建操作,是个操作参数,后面无需增加参数值。
    # --topic : 主题的名称,后面接的参数值一般就是见名知意的字符串名称,类似于 Java 中的字符串类型标识符名称,当然也可以使用数字,只不过最后还是当成数字字符串使用。
    # 指令
    kafka-topics.bat --bootstrap-server localhost:9092 --create --topic test
    
查询主题
  • DOS 窗口输入指令,查看所有主题:

    # Kafka 是通过 kafka-topics.bat 文件进行消息主题操作的。其中包含了对主题的查询、创建、删除等功能。
    # --bootstrap-server : 把当前的 DOS 窗口当成 Kafka 的客户端,那么进行操作前,就需要连接服务器,这里的参数表示服务器的连接方式,因为我们在本机启动 Kafka 服务进程,且 Kafka 默认端口为 9092,所以此处,后面接的参数值为 localhost:9092,用空格隔开。
    # --list : 表示对所有主题的查询操作,是个操作参数,后面无需增加参数值。
    # 指令
    kafka-topics.bat --bootstrap-server localhost:9092 --list
    
  • DOS 窗口输入指令,查看指定主题信息:

    # --bootstrap-server : 把当前的 DOS 窗口当成 Kafka 的客户端,那么进行操作前,就需要连接服务器,这里的参数表示服务器的连接方式,因为我们在本机启动 Kafka 服务进程,且 Kafka 默认端口为 9092,所以此处,后面接的参数值为 localhost:9092,用空格隔开。
    # --describe : 查看主题的详细信息。
    # --topic : 查询的主题名称。
    # 指令
    kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test
    
修改主题

创建主题后,可能需要对某些参数进行修改,那么就需要使用指令进行操作。

  • DOS 窗口输入指令,修改指定主题的参数:

    # Kafka 是通过 kafka-topics.bat 文件进行消息主题操作的。其中包含了对主题的查询、创建、删除等功能。
    # --bootstrap-server : 把当前的 DOS 窗口当成 Kafka 的客户端,那么进行操作前,就需要连接服务器,这里的参数表示服务器的连接方式,因为我们在本机启动 Kafka 服务进程,且 Kafka 默认端口为 9092,所以此处,后面接的参数值为 localhost:9092,用空格隔开。
    # --alter : 表示对主题的修改操作,是个操作参数,后面无需增加参数值。
    # --topic : 修改的主题名称。
    # --partitions : 修改的配置参数:分区数量。
    # 指令
    kafka-topics.bat --bootstrap-server localhost:9092 --topic test --alter --partitions 2
    
删除主题

如果主题创建后不再需要,或创建的主题有问题,可以通过相应的指令删除主题。

  • DOS 窗口输入指令,删除指定名称的主题:

    # Kafka 是通过 kafka-topics.bat 文件进行消息主题操作的。其中包含了对主题的查询、创建、删除等功能。
    # --bootstrap-server : 把当前的 DOS 窗口当成 Kafka 的客户端,那么进行操作前,就需要连接服务器,这里的参数表示服务器的连接方式,因为我们在本机启动 Kafka 服务进程,且 Kafka 默认端口为 9092,所以此处,后面接的参数值为 localhost:9092,用空格隔开。
    # --delete : 表示对主题的删除操作,是个操作参数,后面无需增加参数值。默认情况下,删除操作是逻辑删除,也就是说数据存储的文件依然存在,但是通过指令查询不出来。如果想要直接删除,需要在 server.properties 文件中设置参数 delete.topic.enable=true。
    # --topic : 删除的主题名称。
    # 指令
    kafka-topics.bat --bootstrap-server localhost:9092 --topic test --delete
    
相关推荐
WX187021128734 小时前
在分布式光伏电站如何进行电能质量的治理?
分布式
Stringzhua4 小时前
【SpringCloud】Kafka消息中间件
spring·spring cloud·kafka
不能再留遗憾了7 小时前
RabbitMQ 高级特性——消息分发
分布式·rabbitmq·ruby
茶馆大橘7 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
材料苦逼不会梦到计算机白富美10 小时前
golang分布式缓存项目 Day 1
分布式·缓存·golang
想进大厂的小王10 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
Java 第一深情10 小时前
高性能分布式缓存Redis-数据管理与性能提升之道
redis·分布式·缓存
杨荧11 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
ZHOU西口12 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk12 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka