查询分区位移能算出什么
kafka-get-offsets.sh 输出每个分区的最早或最新位移,格式是「主题:分区:位移」。常用判断有两个:用最新位移减最早位移估算分区里还留着多少数据,用两次最新位移之差估算写入速率。要注意位移是单调递增的编号,不等于消息条数——压实(compact)过的主题中间有空洞,位移差会明显大于实际消息数。
基本信息
| 输出格式 | 主题:分区:位移 |
|---|---|
| 时间参数 | --time -1 最新,--time -2 最早,也可传毫秒时间戳 |
| 口径说明 | 取的是位移数值,不是消息条数 |
| 兼容调用 | 老版本用 kafka-run-class.sh kafka.tools.GetOffsetShell |
典型使用场景
- 估算数据量:最新位移减最早位移,评估残留消息规模
- 评估清理效果:调整保留期后对比最早位移是否推进
- 确认保留范围:按时间戳查位移,判断某时间点的数据是否还在
- 记录基线:变更前后各取一次,用于复盘写入速率
- 容量规划:统计主题总量,评估分区数与磁盘需求
查询最早与最新位移
查询最早与最新位移
# 默认查最新位移(等价 --time -1)
kafka-get-offsets.sh --bootstrap-server localhost:9092 --topic orders
# orders:0:1024
# orders:1:998
kafka-get-offsets.sh --bootstrap-server localhost:9092 --topic orders --time -1 # 最新
kafka-get-offsets.sh --bootstrap-server localhost:9092 --topic orders --time -2 # 最早
# 按时间戳定位:查某一时刻的位移,用于确认数据是否还在保留窗口内
kafka-get-offsets.sh --bootstrap-server localhost:9092 --topic orders --time 1759248000000结果怎么用
| 取值 | 含义 | 典型用途 |
|---|---|---|
| 最新位移 | 当前写入位置 | 判断写入是否仍在进行 |
| 最早位移 | 保留的最小位移 | 确认数据是否已被清理 |
| 两者之差 | 区间内位移跨度 | 估算残留数据量,压实主题偏大 |
| 两次最新位移之差 | 一段时间内的增量 | 估算写入速率与容量趋势 |
老版本通过 kafka-run-class.sh kafka.tools.GetOffsetShell 调用,新版本发行包提供独立的 kafka-get-offsets.sh,写巡检脚本时要做兼容判断。
对全部分区查位移在集群上属于元数据操作,大集群上高频轮询会加重 controller 与 broker 负担,脚本要控制查询频率与范围。