kafka 命令行 生产消费数据,查看偏移量,修改偏移量

1、Topic相关:创建Topic、删除Topic、查看Topic详细信息、查看Topic列表、修改topic分区数
创建Topic

创建一个3分区1副本名为test的topic,必须指定分区数 --partitions 和副本数--replication-factor,其中副本数量不能超过kafka节点(broker)数量
./kafka-topics.sh --zookeeper localhost:2181  --topic test --partitions 3 --replication-factor 1 --create

删除Topic

# 删除名为test的topic
# 删除topic时只有在kafka安装目录config目录下的server.properties中将delete.topic.enable 设置为true topic才会真实删除,否则只是标记为删除,实则不会删除
./kafka-topics.sh --zookeeper localhost:2181  --topic test  --delete

查看某个Topic 分区 副本信息

# 查看名为test的topic的详细信息,分区 副本的数量
./kafka-topics.sh --zookeeper localhost:2181  --topic test --describe

查看有那些Topic

# 查看kafka中创建了那些topic
./kafka-topics.sh  --zookeeper localhost:2181 --list

修改topic的分区数

# 将名为test的topic 修改为4个分区
# 注意 分区数只能增加不能减少
./kafka-topics.sh --zookeeper localhost:2181 -alter --partitions 4 --topic test

2、生产者相关:往某个topic中生产数据
使用命令行往某个topic中写入数据

# 使用命令行 给名为 test 的topic 中生产数据
# 执行以下命令,然后在命令行中写入要发送kafka的数据回车即可发送数据到kafka
./kafka-console-producer.sh --broker-list localhost:9092 --topic test

3、消费者相关:从某个topic中消费数据
消费某个topic中的最新数据

# 0.8版本及以下的的kafka 使用如下命令test topic中的数据
./kafka-console-consumer.sh  --zookeeper localhost:2181 --topic test
# 指定消费10条数据
./kafka-console-consumer.sh  --zookeeper localhost:2181 --topic test --max-messages 10
# 0.9版本及以上的kafka建议使用如下命令进行消费,当然也可使用上一条命令消费
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

消费某个topic中最老的数据

# 0.8版本及以下的的kafka 使用如下命令test topic中的数据
./kafka-console-consumer.sh  --zookeeper localhost:2181 --topic test --from-beginning
# 0.9版本及以上的kafka建议使用如下命令进行消费,当然也可使用上一条命令消费
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

消费某个topic中的数据并指定groupid

# 在命令行消费某个topic中的数据通过/config/consumer.properties 配置文件指定groupid 
# 0.8版本及以下的的kafka 使用如下命令test topic中的数据
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --consumer.config ../config/consumer.properties
# 0.9版本及以上的kafka建议使用如下命令进行消费,当然也可使用上一条命令消费
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --consumer.config ../config/consumer.properties

将/config/consumer.properties配置文件中groupid对应的offset删除,该groupid重置为未使用状态

# 使用这条命令会从最新消息开始消费,会将之前groupid记录的offset重置,并重新开始记录
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --consumer.config ../config/consumer.properties  --delete-consumer-offsets
# 使用consumer.properties 不可以和--from-beginning一同使用 除非与--delete-consumer-offsets一同使用
# 使用这条命令会从头开始消费数据,会将之前groupid记录的offset重置,并重新开始记录
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --consumer.config ../config/consumer.properties  --delete-consumer-offsets --from beginning

4、消费组(group)相关:查看消费者group、查看消费者消费情况(消费至那个offset/积压数据量多少)
查看有那些消费者group

# 0.8版本及以下的的kafka 使用如下命令查看有那些消费者group
./kafka-consumer-groups.sh  --zookeeper localhost:2181 --list
# 0.9版本及以上的kafka建议使用如下命令查看有那些消费者group,当然也可使用上一条命令消费
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

查看某个消费者消费情况(消息队列堆积情况)

# 0.8版本及以下的的kafka 使用如下命令查看名为testgroup 的消费组的消费情况
./kafka-consumer-groups.sh --zookeeper localhost:2181 --group testgroup --describe
# 0.9版本及以上的的kafka 使用如下命令查看名为testgroup 的消费组的消费情况
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group testgroup --describe

5、修改某个消费组的偏移量(offset)
通过zk客户端对topic的分区修改offset 为任意偏移量

# 独立安装的zk,进入zookeeper安装目录的bin目录下,使用如下命令进入zk客户端
./zkCli.sh -server localhost:2181
# 非独立安装的的zk, 直接在kafka安装目录bin目录下,使用如下命令进入zk客户端
./zookeeper-shell.sh  localhost:2181
# 进入zk客户端后可查看某个分区的偏移量 例如名为test的topic的消费者组 test-consumer-group 0分区的offset的消费情况
get /consumers/test-consumer-group/offsets/test/0
# 设置名为test的topic的消费者组 test-consumer-group 0分区的offset 为1000
set /consumers/test-consumer-group/offsets/test/0  1000

通过kafka内置的kafka.tools.UpdateOffsetsInZK类实现修改某个topic 的消费组(config/consumer.properties中配置的groupid)的所有分区的偏移量为最新(latest)或者最旧(earliest)

# 将名为test的topic的消费组(groupid必须从consumer.properties获取,即需要将需要修改的groupid写入consumer.properties配置文件)所有分区的offset设置为最早earliest
./kafka-run-class.sh kafka.tools.UpdateOffsetsInZK earliest ../config/consumer.properties test
# 将名为test的topic的消费组(groupid必须从consumer.properties获取,即需要将需要修改的groupid写入consumer.properties配置文件)所有分区的offset设置为最新latest
./kafka-run-class.sh kafka.tools.UpdateOffsetsInZK latest ../config/consumer.properties test

0.11.0.0及以上版本修改偏移量可使用Kafka自带的kafka-consumer-groups.sh脚本

# 以下可将--zookeeper localhost:2181 更换为--bootstrap-server localhost:9092 高版本的消费者建议连接bootstrap
# 将test topic的消费组test-consumer-group的0分区的偏移量设置为最新
./kafka-consumer-groups.sh --zookeeper localhost:2181 --group test-consumer-group --topic test:0 --reset-offsets --to-earliest –execute
# 将test topic的消费组test-consumer-group的0和1分区的偏移量设置为最旧
./kafka-consumer-groups.sh --zookeeper localhost:2181 --group test-consumer-group --topic test:0,1 --reset-offsets --to-latest –execute
# 将test topic的消费组test-consumer-group的所有分区的偏移量设置为1000
./kafka-consumer-groups.sh --zookeeper localhost:2181 --group test-consumer-group --topic test --reset-offsets --to-offset 1000 –execute
# --reset-offsets后可以跟的其他用法:--to-current:把位移调整到分区当前位移
# --reset-offsets后可以跟的其他用法:--shift-by N: 把位移调整到当前位移 + N处,注意N可以是负数,表示向前移动
# --reset-offsets后可以跟的其他用法:--to-datetime <datetime>:把位移调整到大于给定时间的最早位移处,datetime格式是yyyy-MM-ddTHH:mm:ss.xxx,比如2017-08-04T00:00:00.000

文章来源:

https://blog.csdn.net/ispringmw/article/details/108834144

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查看 Kafka 消费者组未提交偏移的问题所在,可以通过以下方式进调查和调整: 1. 检查消费者组提交偏移的代码:首先,确认消费者组的代码中是否正确执偏移的提交操作。在消费者代码中,通常会有一个方法用于提交偏移,例如`commitSync()`或`commitAsync()`。确保在适当的位置调用了这些方法。如果没有正确提交偏移,可以在代码中添加相应的提交逻辑。 2. 检查消费者组配置:检查消费者组的相关配置项。比如,`enable.auto.commit`配置项用于控制是否自动提交偏移,默认为开启状态。如果设置为自动提交,确保其时间间隔不会导致偏移长时间不提交。如果设置为手动提交,则需要在适当的时机手动调用提交偏移的方法。 3. 检查消费者组偏移存储方式:Kafka 提供了多种方式来存储消费者组的偏移,如 Kafka 内部存储、Zookeeper 存储或外部存储系统。确认消费者组的偏移存储方式是否正确配置,并且存储方式是否正常工作。 4. 检查消费者组与分区的关系:确保消费者组与分区的关系正确。一个分区只能由一个消费者组中的一个消费者进消费。如果消费者组中的消费者数多于分区数,会导致部分消费者无法获得分配到的分区,从而无法提交偏移。可以通过增加分区数或减少消费者数来调整这种情况。 5. 调整消费者组的偏移重置策略:如果消费者组的偏移已经被提交,但数据仍然没有被消费,可以尝试调整消费者组的偏移重置策略。重置策略可以配置为从最早的偏移开始消费或从最新的偏移开始消费。可以根据需求选择适当的重置策略来消费积压的数据。 通过以上方法,您可以查找并调整 Kafka 消费者组未提交偏移的问题。希望对您有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值