Kafka:安装与简单使用

news2024/11/29 22:30:52

文章目录

  • 下载安装
    • windows安装
      • 目录结构
      • 启动服务器
      • 创建主题
      • 发送一些消息
      • 启动消费者
      • 设置多代理集群
      • 常见问题
  • 工具
    • kafka tool
  • 常用指令
    • topic
    • 查看topic
    • 删除topic
  • 常见问题
  • 参考文献

下载安装

下载地址:kafka-download

windows安装

下载完后,找一个目录解压。

解压完成后,看看目录结构。

对于linux来讲,所有的启动文件都放在bin目录下,那一堆sh文件;

对于windows来讲,所有的启动文件放在bin\windows目录下,一堆bat文件。

需要到config目录下,找到server.properties文件,指定log目录:

log.dirs=D:\software\Kafka-2.6.3\kafka-logs

指定在kafka安装目录就可以。

目录结构

bin/
config/
libs/
licenses/
logs/
site-docs/

bin目录下放了一堆Kafka的启动文件,包括kafka启动文件、zookeeper启动文件。bin\windows目录下甚至还有一套给windows用的启动文件。

config目录下有一堆配置文件,包括kafka服务器的配置文件server.properties,以及ZooKeeper的配置文件zookeeper.properties等。

启动服务器

Kafka使用ZooKeeper,因此如果还没有ZooKeeper服务器,需要先启动一个。

Kafka的那一堆打包脚本里提供了一个简单的单节点ZooKeeper实例,cmd内调用:

D:\software\Kafka-2.6.3>.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

Zookeeper启动后,再启动Kafka服务器:

D:\software\Kafka-2.6.3>.\bin\windows\kafka-server-start.bat .\config\server.properties

到这里,Kafka服务器启动成功。

创建主题

创建一个主题,名为test,设定只有一个分区,保留一个副本。

bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

如果想查看当前的主题列表:

bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

除了手动创建主题以外,还可以将代理配置一下,设置成在发布不存在的主题时自动创建主题。

发送一些消息

Kafka带有一个命令行客户端,该客户端将从文件或者标准输入中获取输入,并将其作为消息发送到Kafka集群。

默认情况下,每行将作为单独的消息发送。

运行生产者,在控制台中输入一些消息以发送到服务器:

bin\windows\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test
>this is a message
>this is the other message
>

这时候用kafka tool查看就可以看到:

在这里插入图片描述

启动消费者

Kafka还有一个消费者命令行,可以将消息转存到标准输出:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

如图:

在这里插入图片描述

如果在不同的终端运行着生产者和消费者的命令行,那么现在应该能够在生产者终端中输入消息,并看到它们出现在消费者终端中。

所有命令行工具都有附加选项。之后可以记录查看。

设置多代理集群

在之前,我们的Kafka集群只有一个代理。虽然启动更多的代理并没有什么太大的作用,但是我们这里可以先感受一下(在本地机器上)将集群扩展为3个节点的方法:

首先我们需要为每个broker都创建一个配置文件(windows上用copy指令):

copy config\server.properties config\server-1.properties

copy config\server.properties config\server-2.properties

然后分别编辑这几个配置文件,主要修改以下几个属性即可:

config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dirs=/tmp/kafka-logs-1

config/server-2.properties:
    broker.id=2
    listeners=PLAINTEXT://:9094
    log.dirs=/tmp/kafka-logs-2

默认的server.properties,broker.id=0,listener默认应该是9092。

broker.id,这个属性是每个代理的唯一名称,要保证不重复。

这里重写端口和日志目录,是因为我们需要在同一台机器上运行它们,所以要避免不同代理使用同一端口的情况。

之前我们已经启动了ZooKeeper和一个单节点,现在我们启用两个新来的节点:

.\bin\windows\kafka-server-start.bat .\config\server-1.properties &

.\bin\windows\kafka-server-start.bat .\config\server-2.properties

启动之后,在kafka tool中可以看到:

在这里插入图片描述

broker已经变成3个了。

现在再创建一个复制因子为3的新主题:

bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic

既然我们现在有了一个集群,那我们怎么知道集群下每个代理都在做些什么?

使用describe指令:

bin\windows\kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic my-replicated-topic

输出:
Topic: my-replicated-topic      PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
        Topic: my-replicated-topic      Partition: 0    Leader: 0       Replicas: 0,2,1 Isr: 0,2,1

第一行给出了所有分区的摘要,之后每附加一行就给出一个分区的信息。

当前主题只有一个分区,所以只有一行。

  • leader:负责给定分区所有读取和写入的节点。每个节点都可能成为领导者;
  • replicas:副本,哪些节点复制了此分区的日志;
  • Isr:一组同步副本,是replicas的子集,当前存活,且进度跟leader一样;

在我们的示例中,my-replicated-topic 只有一个分区,分区下只有一个leader节点。

如果想在新主题下发布或者查看消息的话,跟之前一样,改改topic名就可以,比如说发布:

bin\windows\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic my-replicated-topic

如果我们这时候把leader节点关掉,也并不会影响整个集群的时候,kafka将在现有的可用节点里选择一个作为leader,原先的leader也将不会在同步副本集中。

2022-4-13 17:47:20 以上测试失败,集群崩掉了。。

常见问题

在kafka安装目录下,输入命令:

.\bin\windows\kafka-server-start.bat .\config\server.properties

结果报错:

输入行太长
语法错误

疑似原因是kafka目录建的太深了,原先我的kafka根目录位于磁盘下的四级目录,直接放在磁盘目录下就好了。

很神奇的问题,据说就是文件夹树的深度太深了。

工具

kafka tool

可视化查看kafka topic内容的工具

下载地址:https://www.kafkatool.com/download.html

安装后,双击.exe,启动工具就可以。

右键add 新链接,填写基本信息:

在这里插入图片描述

在这里插入图片描述

bootstrap servers多是限制只能用域名来访问,所以需要自己设置hosts。

C:\Windows\System32\drivers\etc 下的 hosts 文件中,添加入 kafka 的集群域名, 例如:

1xx.1xx.2xx.107 kafka1
1xx.1xx.2xx.108 kafka2

kafka tool支持的功能有很多,还可以模拟发送message,功能很丰富。

详细的功能,可以参照参考文献1。

常用指令

topic

查看topic

打印当前所有topic

kafka-topics.bat --bootstrap-server localhost:9092 --list

删除topic

2022-4-26 13:53:21 第一种方式好像不行,删完之后直接kafka打不开了。

2022-4-26 14:13:42 windows端删除topic就是有问题,每次删除必崩溃。我已经不敢动了。

彻底删除topic有两种方式:

  1. 删除kafka存储目录下相关topic目录。(即server.properties中对log.dirs的设置);
  2. 如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。
./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】

 如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion

 你可以通过命令:./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic



 此时你若想真正删除它,可以如下操作:

 (1)登录zookeeper客户端:命令:./bin/zookeeper-client

 (2)找到topic所在的目录:ls /brokers/topics

 (3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。



另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,

如果你删除了此处的topic,那么marked for deletion 标记消失

常见问题

The Cluster ID doesn’t match stored clusterId

去日志目录里把meta.properties删掉就好了,但是删完了之后,我的topic在kafka tool里都看不到了。。。。

参考文献

  1. Kafka 可视化工具
  2. kafka中文文档 不过是1.0的
  3. kafka官方文档 版本可选
  4. windows系统下启动kafka CMD报错:输入行太长,语法错误
  5. windows下安装kafka教程 这个没有按顺序写,第一次看没有注意到要启动ZooKeeper。。。吃大亏。
  6. kafka删除topic
  7. kafka API文档 很不错,灰常重要,关于kafka producer和consummer怎么用,就是从这里学到的。

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

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

相关文章

inndy_echo

inndy_echo Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)32位,只开了NX int __cdecl __noreturn main(int argc, const char **argv, const char **envp) {char s; // [espCh…

微信小程序引入字体在部分机型失效不兼容解决办法

写小程序页面,美工作图用了特殊字体 引入代码: font-face {font-family: huxiaobo;src: url("https://xxxxxxxx.top/assets/fonts/huxiaobonanshenti.woff") } .font-loaded {font-family: "huxiaobo"; } 上线后发现部分安卓机型不…

Java下Properties类的使用(写出和读入)

代码如下: public class MyWork {public static void main(String[] args) throws IOException {Properties pro1 new Properties();pro1.setProperty("0001","张三");pro1.setProperty("0002","李四");pro1.setProperty…

1600*E. Kolya and Movie Theatre(贪心优先队列规律)

Kolya and Movie Theatre - 洛谷 Problem - 1862E - Codeforces 解析: 可以观察到每次看电影所减少的舒畅值都和前一次有关,这样的话,可以发现减少的 d 只和最后一次看电影的时间有关。 所以枚举最后一次看电影的时间,并且维护一…

iOS设备管理器iMazing比iTunes好用吗?有哪些优势

虽然 iTunes 是 Apple 官方指定的 iPhone 数据备份和管理工具,但是一直以来 iTunes 卡顿的使用体验和过慢的备份过程为不少人诟病。如果大家也被 iTunes 体验不佳的备份和管理功能所困扰,那么简单易用、功能强大的iMazing 能为你解决这个问题。 iMazing…

java web+Mysql e-life智能生活小区物业管理系统

本项目为本人自己书写,主要服务小区业主和管理人员。 e-life智能生活小区涉及多个方面的智能化和便利化服务: 1. 用户模块:包含基本的登入登出操作,查看个人信息中用户可以查看 自己的个人资料但不可以修改个人信息。 a) 用户…

从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)

IO流之字节流 1. IO概述1.1 什么是IO1.2 IO的分类1.3 IO的流向说明图解1.4 顶级父类们 2. 字节流2.1 一切皆为字节2.2 字节输出流【OutputStream】2.3 FileOutputStream类构造方法写出字节数据数据追加续写写出换行 2.4 字节输入流【InputStream】2.5 FileInputStream类构造方法…

自学成为一名黑客(自学笔记)

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“…

Armv9 Cortex-A720的L2 memory system 和 L2 Cache

9 L2 memory system Cortex-A720核心的L2内存系统通过CPU bridge连接core与DynamIQ Shared Unit-120,其中包括私有的L2缓存。 L2缓存是统一的,每个Cortex-A720核心在一个集群中都有私有的L2缓存。 L2内存系统包括使用虚拟地址(VA)和程序计数器(PC)的数据预取引擎。不同…

C++——函数指针与指针函数

函数指针与指针函数 1. 初识 一个区分的小技巧: “函数指针”中函数是用来修饰指针的,所以主体是指针,它主要是用来指向函数的。 “指针函数”中指针是用来修饰函数的,所以主体是函数,该函数的返回类型是指针。 举个…

A1048 Find Coins(测试点1)

Sample Input 1: 8 15 1 2 8 7 2 4 11 15 Sample Output 1: 4 11 Sample Input 2: 7 14 1 8 7 2 4 11 15 Sample Output 2: No Solution idea 测试点1:m比i小的情况处理小细节:i m/2时,注意i的出现次数必须大于一次 solution #in…

【数据结构--八大排序】之冒泡排序+选择排序+插入排序

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

【数据库——MySQL】(13)过程式对象程序设计——存储函数、错误处理以及事务管理

目录 1. 存储函数2. 存储函数的应用3. 错误处理4. 抛出异常5. 事务处理6. 事务隔离级7. 应用实例参考书籍 1. 存储函数 要 创建 存储函数,需要用到 CREATE 语句: CREATE FUNCTION 存储函数名([参数名 类型, ...])RETURNS 类型[存储函数体]注意&#xff1…

ESP32IDF — 硬件I2C使用教程

前言 (1)最近刚做完ESP32的一个模块的驱动移植,使用到了I2C。感觉ESP32的硬件I2C还是挺容易使用的。 (2)本文将只会介绍ESP32的硬件I2C使用,如果想知道软件I2C使用,可看其他的任意一款芯片软件I…

双指针算法——移动零

双指针算法——移动零😎 前言🙌题目详情:图解分析:代码分享:B站讲解视频链接: 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧…

数据集笔记:华盛顿共享单车OD数据

2010~2022 共享单车OD数据 数据地址:Index of bucket "capitalbikeshare-data"

STM32F4X UCOSIII任务消息队列

STM32F4X UCOSIII任务消息队列 任务消息队列和内核消息队列对比内核消息队列内核消息队列 UCOSIII任务消息队列API任务消息队列发送函数任务消息队列接收函数 UCOSIII任务消息队列例程 之前的章节中讲解过消息队列这个机制,UCOSIII除了有内核消息队列之外&#xff0…

【数据结构】队列实现+层序遍历详解+一些练题

欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言队列的实现层序遍历详解强化练习1.判断是不是完全二叉树求二叉树的最大深度 总结 前言 国庆到了,也要内卷一下,感…

集合-List集合

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一 . 什么是List? 二 . List集合的特点 三 . 常用方法 1.void add(int index, E element): 将指定的元素插入到列表的指定位置。 2.E remove(int in…

1.4.C++项目:仿mudou库实现并发服务器之buffer模块的设计

一、buffer模块: 缓冲区模块 Buffer模块是一个缓冲区模块,用于实现通信中用户态的接收缓冲区和发送缓冲区功能。 二、提供的功能 存储数据,取出数据 三、实现思想 1.实现换出去得有一块内存空间,采用vector ,vector底层是一个…