使用命令读取kafka的内部topic:__consumer_offsets

【Kafka|常用CLI】Topic管理 本文介绍常用的topic管理命令,主要涉及kafka-topics脚本, kafka-reassign-partitions和kafka-config脚本,前者是专门的topic相关的脚本,中间的是分区重分配相关的脚本,后者是配置相关的脚本,不仅可以管理topic,还能管理broker,consumer等。 阅读详情
众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。


不过依然有很多用户希望了解__consumer_offsets topic内部到底保存了什么信息,特别是想查询某些consumer group的位移是如何在该topic中保存的。针对这些问题,本文将结合一个实例探讨如何使用kafka-simple-consumer-shell脚本来查询该内部topic。


1. 创建 topic “test”

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 1 --partitions 3 #创建一个有3个partition、1个副本的 test topic

2. 使用kafka-console-producer.sh脚本生产消息

bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test

3.  验证生产消息成功

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test --time -1
test:2:2
test:1:2
test:0:3


参数解释:--time -1 表示从最新的时间的offset中得到数据条数

输出结果每个字段分别表示topic、partition、untilOffset

上面的输出结果表明总共生产了7条消息

4. 创建一个console consumer group

 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --consumer.config config/consumer.properties --topic test  --from-beginning --new-consumer

参数解释:

--from-beginning 如果consumer之前没有建立offset,则从producer最开始的数据读取。

5. 获取该consumer group的group id(后面需要根据该id查询它的位移信息)

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --list --new-consumer
wv

其实在第4步中在配置文件consumer.properties中配置了group.id为wv,所以这儿得到的是wv,如果没有配置,会随机产生一个console-consumer-***的group.ig

6. 查询__consumer_offsets topic所有内容

bin/kafka-console-consumer.sh --topic __consumer_offsets --zookeeper localhost:2181 --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter" --consumer.config config/consumer.properties --from-beginning  --delete-consumer-offsets

参数解释: 

--delete-consumer-offsets由于之前wv这个group.id

注意:运行下面命令前先要在consumer.properties中设置exclude.internal.topics=false

7. 计算指定consumer group在__consumer_offsets topic中分区信息

这时候就用到了第5步获取的group.id(本例中是console-consumer-46965)。Kafka会使用下面公式计算该group位移保存在__consumer_offsets的哪个分区上:

Math.abs(groupID.hashCode()) % numPartitions

在本例中,对应的分区=Math.abs("wv".hashCode()) % 50 = 7,即__consumer_offsets的分区7保存了这个consumer group的位移信息,下面让我们验证一下。

8.  获取指定consumer group的位移信息

bin/kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 7 --broker-list localhost:9092,localhost:9093,localhost:9094 --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter"

输出结果如下:

[wv,test,0]::[OffsetMetadata[3,NO_METADATA],CommitTime 1479735556398,ExpirationTime 1479821956398]
[wv,test,1]::[OffsetMetadata[2,NO_METADATA],CommitTime 1479735556398,ExpirationTime 1479821956398]
[wv,test,2]::[OffsetMetadata[2,NO_METADATA],CommitTime 1479735556398,ExpirationTime 1479821956398]

上图可见,该consumer group果然保存在分区11上,且位移信息都是对的(这里的位移信息是已消费的位移,严格来说不是第3步中的位移。由于我的consumer已经消费完了所有的消息,所以这里的位移与第3步中的位移相同)。另外,可以看到__consumer_offsets topic的每一日志项的格式都是:[Group, Topic, Partition]::[OffsetMetadata[Offset, Metadata], CommitTime, ExpirationTime]

对于spark streaming来说,其中DStream中,DStream的本质是RDD序列,读取kafka时,也就是KafkaRDD,通过读取KafkaRDD的getPartitions方法,可以发现,KafkaRDD 的 partition 数据与 Kafka topic 的某个 partition 的 o.fromOffset 至 o.untilOffset 数据是相对应的,也就是说 KafkaRDD 的 partition 与 Kafka partition 是一一对应的。

参考:http://www.cnblogs.com/huxi2b/p/6061110.html

获取kafka某一topic中最新的offset 2. **Kafka的Offset管理接口**:Kafka自带的Offset管理接口可以查询集群中各个分区的offset。1. **Kafka客户端库**:如果你正在使用Kafka客户端库(如Kafka-python、Kafka-avro等),这些库通常提供了查询offset的函数。如果是从代码中获取,使用客户端库是最直接的方式;3. **Kafka命令行工具**:Kafka也提供了一个名为`kafka-console-consumer`的命令行工具,可以通过命令行查看offset。 阅读详情

相关推荐

【Kafka】Kafka 如何读取offset topic内容 (__consumer_offsets)

1.概述 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 在kafka 0.9 版本开始提供了新的consumer及consumer group,位移的管理与保存机制发生了很大的变化,新版本的consumer默认将不再保存位移到zookeeper中,而是__co

九师兄 1316

__consumer_offsets

__consumer_offsets是kafka自行创建的,和普通的topic相同。它存在的目的之一就是保存consumer提交的位移。 __consumer_offsets的每条消息格式大致如图所示: 配图105,图5.5 可以想象成一个KV格式的消息,key就是一个三元组:group.id+topic+分区号,而value就是offset的值。 考虑到一个kafka生成环境中可能有很多...

初阳 1万+

中国IP发展之面面观

谢学军/邱善勤2006-1-25 9:29:28电子经理世界       IP远没有我们当初想象的那么简单   当SoC设计方法学刚刚传到国内的时候,学界为之欢呼雀跃,由于IP/SoC设计技术的使用,可以将发达国家用几年甚至十几年积累起来的设计技术直接为我所用,使中国的集成电路跳过漫长的积累阶段,迅速站到较高的起点上。因此在当时看来,IP/SoC设计技术是我国提升设计水平、发展

klxdmm305的专栏 1188

kafka-2-查看topic的offset以及消费者组的offset

(1)查看某个topic的offset # kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list hbak1:9092 --topic zb (2)查看消费者组对某个topic的消费情况 (2-1)查看consumer group列表,使用--list参数 # kafka-consumer-groups.sh --bootstrap-server hbak1:9092 --list group-204 d9a72...

qq_20466211的博客 2万+

遥感图像处理实战:DOTA数据集旋转框转YOLO格式全流程解析(附代码)

本文详细解析了将DOTA遥感数据集的旋转框标注转换为YOLO格式的全流程。针对遥感图像中物体朝向任意性的特点,文章重点阐述了将旋转框转换为外接水平框的数学原理与代码实现,并提供了批量转换脚本和可视化验证方法,帮助开发者高效处理数据,为基于YOLO的遥感目标检测项目奠定基础。

weixin_29082143的博客 398

陀螺仪选型避坑指南:为什么IMU660RA是智能车竞赛的性价比之选?

本文针对智能车竞赛场景,提供陀螺仪选型避坑指南,并深度解析为何IMU660RA成为性价比之选。文章指出,竞赛选型应避免盲目追求高性能“黑盒”模块,而应注重原始数据获取与算法开发。IMU660RA以其良好的常温稳定性、适中的噪声水平、极致的性价比和丰富的生态支持,成为帮助参赛者深入理解姿态解算原理、进行“白盒开发”的理想教学与实践平台。

tech5的博客 879

【kafka原理】 消费者偏移量__consumer_offsets_相关解析

我们在kafka的log文件中发现了还有很多以 __consumer_offsets_的文件夹;总共50个; 由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 __consumer_offsets 是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一就

石臻说AI(szzdzhp001) 【原名 石臻臻的杂货铺】 7426

解决redhat8/centos8无法使用yum问题(报错:This system is not registered to Red Hat Subscription Management)

解决redhat无法使用yum问题、以及替换repo文件后仍无法使用yum的问题

qq_43569119的博客 4342

Kafka 如何读取offset topic内容 (__consumer_offsets)

1. 前言 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 不过依然有很多用户希望了解__consumer_offsets topic内部到底保存了什...

不见其长,日有所长 2116

从Axure转Figma?这篇编组、缩放、圆角、评论的对比指南帮你无缝切换

本文为资深Axure设计师提供了向Figma无缝迁移的实战指南。文章深度对比了编组、缩放、圆角、评论等核心操作,重点解析了Figma独特的自动布局、组件系统和实时协作功能,旨在帮助用户快速适应新工具,实现设计思维与工作效率的跃迁。

tomato的博客 850

本地生成无限量的AI图像和视频——无需网络,无限制,本地人工智能图像和视频生成的实用指南

我们将使用ComfyUI,这是一个功能强大的基于节点的 AI 图像和视频生成可视化界面。如果您是 ComfyUI 的新手,请不要担心。ComfyUI是什么?ComfyUI 是一款可视化工具,可让您在自己的计算机上生成 AI 图像和视频。您无需一次性理解所有内容。在本指南中,我们将从现成的工作流程入手,逐步帮助您建立信心。乍一看,内容似乎很庞杂——但本指南将着重于:-简单的工作流程-预构建示例-最少的配置我想向你展示使用这个工具最简单的工作流程。

iCloudEnd的博客 1801

Kafka 源码解析 - Kafka 如何读取offset topic内容 (__consumer_offsets)

主题中存储的数据是经过序列化的,key通常是groupId、topic和partition的组合,而value是序列化后的offset信息。首先,需要通过 KafkaConsumer 类实例化一个消费者对象,该对象能够读取任意主题的消息,当然也包括。主题拉取的记录,这些记录包含了消费者的groupId、TopicPartition以及对应的消费位移。要从源码角度解析如何读取这个主题的内容,首先要知道 Kafka 的内部机制和相关的类。正常情况下,消费者会自动管理其在。主题的内容,消费者需要订阅这个主题。

qq_33240556的博客 988

基于STM32设计的太阳能智慧路灯_444

本文设计并实现了一种基于 STM32 的太阳能智慧路灯系统。系统以 STM32F103C8T6 单片机为核心,集成温湿度检测、空气质量检测、环境光照检测、行人检测和路灯故障检测等功能,实现对路灯运行环境和工作状态的实时感知。

460

Kafka设计解析(十二)Kafka 如何读取offset topic内容 (__consumer_offsets)

转载自huxihx,原文链接Kafka 如何读取offset topic内容 (__consumer_offsets) 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并且默认提供了kafka_consumer_grou...

dlx29376的博客 588

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

手动重置/设置 Consumer Group 的Offsets

最近项目出现问题,产生了很多无用的topic消息到kafka集群,需要手动设置某个topic的consumer的Offset。 网上查了查资料,这里记录一下。 Using kafka-consumer-groups.sh With the setup done, you should be able to list the currently active groups with: kafka-consumer-groups.sh \ --bootstrap-server demo-...

zzhongcy的专栏 5155

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

kafka实战(二):kafka读取偏移量主题信息(__consumer_offsets)

Kafka 的新版本已经支持将 group 组的偏移量信息存储在 kafka 中,而且由于之前存储在 zookeeper 中,而 zookeeper 并不适合大批量的频繁写入操作,官网也是建议使用 kafka 来进 行存储。 那么问题来了,我们要怎样查看在 kafka 中的 metadata 信息呢? Metadata 是以 topic 的形式存储在 kafka 中的,topic 名为:__co...

桃花惜春风 9799

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Kafka 消费者偏移量追踪机制解析:Group Coordinator、__consumer_offsets 主题与提交/获取全流程

本篇文章以 Apache Kafka 官方文档 [distribution.md](https://link.gitcode.com/i/27637ac63b446185e290fa8e57b0b5d3) 中 "Consumer Offset Tracking" 一节为核心骨架,深入剖析 Kafka 消费者如何通过**组协调器(Group Coordinator)**追踪、提交与获取消费偏移量。你

gitblog_00892的博客 461

Kafka 消费者组管理模块(五):__consumer_offsets的写入和读取

写入__consumer_offsets 之前介绍的 storeOffsets 方法调用它写入已提交位移消息。而本篇介绍的 storeGroup 方法调用它写入消费者组注册消息,即向 Coordinator 注册消费者组。 def storeGroup(group: GroupMetadata, groupAssignment: Map[String, Array[Byte]], responseCallback:...

lianggx3的博客 1289
上一篇: Python针对SSH技术的封装
下一篇: Spark源码解读之RDD依赖Dependency
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值