第一章 Kafka常用命令

1. Topic(主题)

1.1. 创建Topic

bin/kafka-topics.sh --create --bootstrap-server hadoop01:9092 --replication-factor 2 --partitions 1 --topic test

说明:

对kafka-topic.sh相关的操作通常是指定 --zookeeper 参数。然而从 Kafka 2.2 版本开始,社区推荐用 --bootstrap-server 参数替换 --zookeeper 参数,并且显式地将后者标记为“已过期”。(2.2以上也兼容 --zookeeper ,但如果是2.2以前的版本,就只能使用 --zookeeper 参数。)
社区推荐使用 --bootstrap-server 而非 --zookeeper 的原因主要有两个。

  1. 使用 --zookeeper 会绕过 Kafka 的安全体系。这就是说,即使你为 Kafka 集群设置了安全认证,限制了主题的创建,如果你使用 --zookeeper 的命令,依然能成功创建任意主题,不受认证体系的约束。这显然是 Kafka 集群的运维人员不希望看到的。
  2. 使用 --bootstrap-server 与集群进行交互,越来越成为使用 Kafka 的标准姿势。换句话说,以后会有越来越少的命令和 API 需要与 ZooKeeper 进行连接。这样,我们只需要一套连接信息,就能与 Kafka 进行全方位的交互,不用像以前一样,必须同时维护 ZooKeeper 和 Broker 的连接信息。

1.2. 查询Topic列表

1.2.1. 查询所有Topic列表

bin/kafka-topics.sh --list --bootstrap-server hadoop01:9092

添加--exclude-internal可以将排除kafka内部topic,比如__consumer_offsets

bin/kafka-topics.sh --list --bootstrap-server hadoop01:9092  --exclude-internal

1.2.2. 查询test开头的所有Topic列表

bin/kafka-topics.sh --bootstrap-server hadoop01:9092 --list --exclude-internal --topic "test.*"

1.3. 查询Topic配置

1.3.1. 单个Topic配置

bin/kafka-topics.sh --describe --bootstrap-server hadoop01:9092 --topic test

1.3.2. 批量查询Topic配置

bin/kafka-topics.sh --topic ".*?" --bootstrap-server hadoop01:9092 --describe --exclude-internal

1.4. 删除Topic

bin/kafka-topics.sh  --bootstrap-server hadoop01:9092 --delete --topic test-lgb

1.5. Topic扩容

1.5.1. 单个Topic扩容

bin/kafka-topics.sh --bootstrap-server hadoop01:9092 --alter --topic test --partitions 3

1.5.2. 批量Topic扩容

将所有正则表达式匹配到的Topic分区扩容到4个

bin/kafka-topics.sh --topic ".*?" --bootstrap-server hadoop01:9092 --alter --partitions 3​​

前提是所有的Topic都不是3个分区,否则会报错。

2. Producer(生产者)

2.1. 发送消息

(1)发送消息

bin/kafka-console-producer.sh --broker-list hadoop01:9092 --topic test

This is a message

This is another message

(2)发送消息,指定生产者参数 acks 为 -1,同时启用 LZ4 的压缩算法:

bin/kafka-console-producer.sh --broker-list hadoop01:9092 --topic test --request-required-acks -1 --producer-property compression.type=lz4

当设置acks=-1时,Partition Leader接收到消息之后,还必须要求ISR列表里跟Leader保持同步的那些Follower都要把消息同步过去,才能认为这条消息是写入成功。

3. Consumer(消费者)

3.1. 消费消息

(1)从头开始消费(--from-beginning参数表示从该主题最早的位移开始消费)

bin/kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic test --from-beginning

I am  a  student.

Hello, How are you?

This is a message

This is another message

(2)指定消费者组

bin/kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic test --from-beginning  --group  group01

I am  a  student.

Hello, How are you?

This is a message

This is another message

如果没有持续发送消息,第二次执行这条命令,将消费不到数据。

4. Consumer_groups(消费者组)

4.1. 查看消费者组的消费情况

bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --describe --group group01

4.2. 查看所有消费者组提交的位移数据

对于 __consumer_offsets 而言,由于它保存了消费者组的位移数据,有时候直接查看该主题消息是很方便的事情。下面的命令可以帮助我们直接查看消费者组提交的位移数据。

bin/kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --from-beginning

除了查看位移提交数据,我们还可以直接读取该主题消息,查看消费者组的状态信息。

bin/kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$GroupMetadataMessageFormatter" --from-beginning

4.3. 重置消费组位移

重置位移可以大致从两个维度来进行。1.位移维度。2.时间维度。

4.3.1. 按照时间维度重置位移

DateTime 策略直接指定 --to-datetime

(1)把主题 test 的 消费者组group01的offset 重置到2024-02-02T00:00:00.000+0800

bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --group group01 --topic test --reset-offsets --to-datetime 2024-02-02T00:00:00.000+0800 --execute

最后一个参数--excute如果不加,只是打印位移调整方案,不实际执行;加上参数--excute执行真正的位移调整。

从NEW-OFFSET可以看到,OFFSET已经重置到0。

(2)查看消费者组的消费情况

bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --describe --group group01

可以看到CURRENT-OFFSET已经回到0。

4.3.2. 按照位移维度重置位移

Specified-Offset 策略直接指定--to-offset。

(1)把主题 test 的 消费者组group01的offset 重置到2。

bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --group group01 --topic test --reset-offsets --to-offset 2 --execute

从NEW-OFFSET可以看到,OFFSET已经重置到2。

(2)查看消费者组的消费情况

bin/kafka-consumer-groups.sh --bootstrap-server hadoop01:9092 --describe --group group01

可以看到CURRENT-OFFSET已经回到2。

第二章 其他脚本工具

1. 生产者性能测试

bin/kafka-producer-perf-test.sh --topic test --num-records 5000000 --throughput -1 --record-size 200 --producer-props bootstrap.servers=hadoop01:9092 acks=1 linger.ms=50

2. 消费者性能测试

bin/kafka-consumer-perf-test.sh --broker-list hadoop01:9092 --messages 5000000 --topic test

3. 查看topic消费进度

必须参数为--group, 不指定--topic,默认为所有topic。

bin/kafka-consumer-groups.sh --bootstrap-server  hadoop01:9092 --describe --group group01

4. 获取 topic 当前消息数

# 获取当前最大位移

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list hadoop01:9092 --topic test --time -1

# 当前获取最早位移

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list hadoop01:9092 --topic test --time -2

# 以上两个数相减,即可得出 topic 当前在集群的消息总数

Kafka-常用命令行命令(Kafak3.4.0最新命令)的更多相关文章

  1. windows下cmd命令行显示UTF8字符设置(CHCP命令)

    本文由 www.169it.com 收集整理 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况下 ...

  2. 在cmd命令行使用Maven Archetype插件 generate命令创建简单的java web项目

    前提: 1.下载apache-maven:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache ...

  3. Google 开源的 Python 命令行库:fire 实现 git 命令

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  4. python命令行下tab键补全命令

    在python命令行下不能使用tab键将命令进行补全,手动输入又很容易出错. 解决:tab.py #/usr/bin/env python # -*- coding:utf-8 -*- ''' 该模块 ...

  5. mysql命令行批量插入100条数据命令

    先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...

  6. 2D命令行小游戏Beta1.0

    前提: 遇到许多问题,没有参考大佬一些方法是敲不出来的...Orz using System; using System.Collections.Generic; using System.Linq; ...

  7. java 调用 linux 命令行 +使用管道、awk等命令进行数据处理的方法

    这里用 sh -c "命令" 的方式是因为java里只能这么用,管道这边java处理不了,所以只能一次执行一条命令,但是在linux里用 sh -c 的方式返回的awk处理过的结果 ...

  8. Win7在CMD命令行中使用管理员权限运行命令

    使用命令: runas /user:administrator 需要执行的命令 如下:

  9. linux “命令行自动补全”功能用命令

    是按Tab键,左上角ESC的下面两个,如果你当前目录只有一项,只需要直接Tab,如果有多项,输入前面不同的部分再Tab,一般输入3个字母就可以,如果按一下没效果,按两下会列出所有项,然后再输入一点自己 ...

  10. List of Chromium Command Line Switches(命令行开关集)——官方指定命令行更新网址

    转自:http://peter.sh/experiments/chromium-command-line-switches/ There are lots of command lines which ...

随机推荐

  1. 《3D编程模式》写书-第6次记录

    大家好,这段时间我完成了对初稿的第二轮修改,已经把稿子提交给编辑了 这里是所有的的写书记录: <3D编程模式>写书记录 本轮修改主要进行了下面的修改: 修改UML描述 增加依赖关系 角色之 ...

  2. P1004-DP【绿】

    这道题很有趣,暴搜的时间复杂度太过于凶残O(K*(2^n)^2)(K的意思是大常数),不过作为提高组T4,这道题数据范围太小了,感觉哪怕是离谱的暴搜也能过. 再加上一时半会没想好多项式时间复杂度的正解 ...

  3. C# 排序算法2:选择排序

    选择排序法 ,是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换:在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止. 原 ...

  4. 大数相加 a+b

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #i ...

  5. java进阶(21)--集合基础

    一.基本概念 1.数组其实是一个集合,二集合是一个容器 2.集合不能直接存储基本数据类型,也不能存java对象,存储的是引用数据类型 list.add(100); //自动装箱Integer 3.ja ...

  6. 基于AHB_BUS的eFlash控制器设计-01

    基于AHB-BUS的eflash控制器设计 SRAMC是单周期的读写,控制比较简单,没有状态机也没有软硬件的协同 eflash是非易失性的存储器,可以进行读写擦除,它也是一个基于AHB_slave的模 ...

  7. tomcat 一闪而过 ( 解决方案 )

    配置JAVA_HOME,注意变量值是jdk的主目录,不是bin目录,并且不要加分号

  8. [转帖]使用 Dumpling 和 TiDB Lightning 备份与恢复

    本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复. 在备份与恢复场景中,如果需要全量备份少量数据(例如小于 50 GB),且不要求备份速度,你可以使用 Dum ...

  9. [转帖]Megacli常用命令汇总

    MegaCli 是一款管理维护硬件 RAID 软件,可以通过它来了解当前 raid 卡的所有信息,包括 raid 卡的型号,raid 的阵列类型,raid 上各磁盘状态,等 .通常,我们对硬盘当前的状 ...

  10. [转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了

    https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb "Mojo 可能是近几十年来最大的编程语言进步." 近日,由 LLVM 和 Sw ...