irpas技术客

系统运维系列 之Kafka手动设置offset(经典方法总结)_琅晓琳_kafka设置offset

irpas 4111

1 问题背景 在使用Kafka消费数据过程中,消费程序可能出现运行问题,导致消费不及时,消息堆积很多;尤其是消息消费后需要进行一列后处理,这种情况下就需要考虑一些方法来进行消费参数的设置。

2 举例 测试集群中有3台服务器,分别设置为Kafka的3个分区,分别为分区1,分区2和分区3,由于消费者出现运行问题,导致无法消费数据或者仅消费1到2个分区的数据,这时候分区中堆积的数据很多,达到百万级别甚至千万级别,由于消息消费后需要进行后续处理,按照正常速度消费需要较长时间才可以消费完这些堆积数据,且消费过程中会影响实时消息的消费情况,这样会形成一个恶性循环。

3 解决方案 3.1 利用–reset-offsets进行设置,此方法要求*Kafka版本在0.11.以上 步骤1:查询topic的offset的范围

#最小值 bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list AAA:9092 -topic test --time -2 #最大值 bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list AAA:9092 -topic test --time -1

步骤2:利用–reset-offsets命令进行偏置量的重置

#to-offset后面的数字代表前面查到的最小值到最大值范围中的数据 bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --to-offset 10000 --topic test --execute #将任意主题重置到最早位置消费 bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-earliest –execute #更新到当前offset位置 bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-current --execute #把位移调整到分区当前最新位移 bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-latest --execute #offset设置到指定时刻开始 bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --group groupName --reset-offsets --all-topics --to-datetime 2021-10-25T12:30:00.000 #参数 --execute:执行真正的位移调整 --export:把位移调整方案按照CSV格式打印,方便用户成csv文件,供后续直接使用

步骤3:其余脚本补充

#查看 kafka 消费者组列表 /bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --list #查看指定消费者的offset bin/kafka-consumer-groups.sh --bootstrap-server ip:9092 --describe --group groupName

3.2 设置consumer group的offset 步骤1:启动zookeeper client

/zookeeper/bin/zkCli.sh

步骤2:通过下面命令设置consumer group:groupName topic:test partition:0的offset为10000

set /kafka/consumers/groupName/offsets/test/0 10000

步骤3:重启相关的应用程序

3.3 “暴力”方法 步骤1:原理:Kafka凭什么速度那么快? Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。 即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。 步骤2:Kafka消费者如何控制消费速度 步骤3:在应用程序侧修改,比如可修改消息的后处理程序部分,提升消息的消费速度等。

参考资料: http://·blogs.com/yangxusun9/p/13049132.html Kafka消费者如何控制消费速度


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #kafka设置offset #1 #2