Kafka入门,offset的默认维护位置(二十一)

offset的默认维护位置

在这里插入图片描述
0.9版本之前:consumer默认将offset保持在zookeeper中
从0.9版本开始,consumer默认将offset保存在kafka一个内置的topic中,该topic为__consumer_offsets

__consumer_offsets 主题里面采用key和value方式存储数据,key是group.id+topic+分区号,value就是当前offset的值。每隔一段时间,kafka内部会对这个topic进行compact,也就是每隔group.id+topic+分区号就保留最新的数据

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

在这里插入图片描述
如果看不到
在配置文件 config/consumer.properties 中添加配置 exclude.internal.topics=false,
默认是 true,表示不能消费系统主题。为了查看该系统主题数据,所以该参数修改为 false。

自动提交offset

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafkaoffset是指用于标识消息在一个分区内的位置的唯一标识。每个消费者在消费消息时,都会有一个对应的offset来记录它已经消费到的位置,以便在下次启动时从该位置继续消费。 在Kafka的早期版本中,使用ZooKeeper来存储消费者的消费状态和offset的值。但随着架构的发展,Kafka逐渐减少了对ZooKeeper的依赖。新版本中的消费者使用了Kafka内部的group coordination协议来管理消费者组和offset的值。这种方式减少了对ZooKeeper的依赖性。 关于如何保证数据不丢失的问题,有几种方式可以实现。一种方式是使用Spark Checkpoint,将Kafkaoffset和其他数据一并保存到HDFS中。但这种方式可能在应用升级或更新时无法恢复。 另一种方式是使用外部NOSQL数据库,如HBase或Redis,来保存offset的值。这种方式可以支持大吞吐量的offset更新,但需要用户编写读写程序,并维护额外的组件。 还有一种方式是使用ZooKeeper来保存offset的值。在较早的Kafka版本中,offset保存在ZooKeeper的特定路径下。但是,当频繁更新offset时,ZooKeeper可能成为瓶颈,因为其写入能力有限。 而在kafka-0.10.1.X版本之后,offset的值被保存在一个特殊的Kafka主题中,名为__consumer_offsets。这种方式不需要手动编写offset管理程序或维护额外的集群,因此被认为是较为理想的实现方式。 综上所述,Kafkaoffset是用于标识消息在分区内位置的唯一标识。它的管理方式可以使用ZooKeeper、外部NOSQL数据库或Kafka自身的特殊主题来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值