【troubleshooting】记一次Kafka集群重启导致消息重复消费问题处理记录

因需要重启了Kafka集群,重启后发现部分topic出现大量消息积压,检查consumer日志,发现消费的数据竟然是几天前的。
由于平时topic消息基本上无积压,consumer消费的数据都是最新的,明显是consumer在重新消费之前已经消费过的数据。

处理方法:将Kafka topic中consumer已经消费的offset值设置为最大值
步骤如下:
1、从Kafka查询出目前堵塞的topic消息队列中,最大的offset值(其实从Kafka的管理页面上也可以看到这值):
命令:./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092 -topic topic_name--time -1
查询结果
topic_name:2:1024
topic_name:1:1024
topic_name:0:1024

2、登录zookeeper,将堵塞的topic中consumer已经消费的offset值设置为最大的offset值
./zkCli.sh -server 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181
然后执行如下命令,设置offset值
set /kafka/consumers/instance/offsets/topic_name/0 1024
set /kafka/consumers/instance/offsets/topic_name/1 1024
set /kafka/consumers/instance/offsets/topic_name/2 1024

3、重启所有consumer应用,这样consumer就从最大offset值处开始消费

原因分析:由于在关闭Kafka和zookeeper进程时,使用的是kill -9 PID,导致部分topic offset值未来得及提交,出现消息重复消费的现象。
关闭Kafka和zookeeper,需要按正常方式关闭应用,不能直接使用kill进程的方式。
./kafka-server-stop.sh
./zkServer.sh stop

参考信息:
修改kafka topic的offset几种方法
http://blog.csdn.net/yxgxy270187133/article/details/53666760
Kafka重复消费和丢失数据研究
http://blog.csdn.net/zollty/article/details/53958641

原文地址:http://blog.51cto.com/tryagaintry/2059359

时间: 2024-08-01 14:45:24

【troubleshooting】记一次Kafka集群重启导致消息重复消费问题处理记录的相关文章

程序重启RocketMQ消息重复消费

最近在调试RocketMQ消息发送与消费的Demo时,发现一个问题:只要重启程序,RocketMQ消息就会重复消费. 那么这是什么原因导致的,又该如何解决呢? 经过一番排查,发现程序使用的RocketMQ客户端版本是3.6.2,而测试环境安装的RocketMQ环境的版本是4.1.0.原来是客户端和服务器端版本不一样导致的,消息并没有最终被消费,即没有ACK消息确认,只要程序重启就会重复消费. 解决方案:RocketMQ客户端版本使用与服务器端的同一版本,即4.1.0版本. 划重点:使用Rocke

Kafka【第一篇】Kafka集群搭建

Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是又上游模块产生,上游模块,使用上游模块的数据计算.统计.分析,这个时候就可以使用消息系统,尤其是分布式消息系统! 2.Kafka的定义 What is Kafka:它是一个分布

在团800运维工作总结之kafka集群日常工作经验总结

一些重要的原理 基本原理什么叫broker partition cg我就不在这里说了,说一些自己总结的原理 1.kafka有副本的概念,每个副本都分在不同的partition中,这中间分为leader和fllower 2.kafka消费端的程序一定要和partition数量一致,不可以多,会出现有些consumer获取 不到数据的现象 3.producer原理 producer通过zookeeper获取所连接的topic都在那些partiton中,每个parition的leader是那 个,针对

kafka集群部署文档(转载)

原文链接:http://www.cnblogs.com/luotianshuai/p/5206662.html Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是由上游模块产生,上游模块,使用上游模块的数据计算.统计.分析,这

centos7搭建kafka集群-第一篇

Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是由上游模块产生,上游模块,使用上游模块的数据计算.统计.分析,这个时候就可以使用消息系统,尤其是分布式消息系统! 2.Kafka的定义 What is Kafka:它是一个分布

Ubuntu下kafka集群环境搭建及测试

1,解压 [email protected]1:/usr/local# tar zxvf kafka_2.11-0.8.2.2.tgz 2,重命名 [email protected]1:/usr/local# mv /usr/local/kafka_2.11-0.8.2.2 /usr/local/kafka 3,起zookeeper集群到指定后台文件(不占用页面) [email protected]1:/usr/local/kafka# bin/zookeeper-server-start.sh

使用Docker快速搭建Zookeeper和kafka集群

集群搭建 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeister/kafka镜像 集群规划 hostname Ip addr port listener zoo1 172.19.0.11 2184:2181 zoo2 172.19.0.12 2185:2181 zoo3 172.19.0.13 2186:2181 kafka1 172.19.0.14 9092:9092 kafka1 kafka2 172.1

大数据技术之_10_Kafka学习_Kafka概述+Kafka集群部署+Kafka工作流程分析+Kafka API实战+Kafka Producer拦截器+Kafka Streams

第1章 Kafka概述1.1 消息队列1.2 为什么需要消息队列1.3 什么是Kafka1.4 Kafka架构第2章 Kafka集群部署2.1 环境准备2.1.1 集群规划2.1.2 jar包下载2.2 Kafka集群部署2.3 Kafka命令行操作第3章 Kafka工作流程分析3.1 Kafka 生产过程分析3.1.1 写入方式3.1.2 分区(Partition)3.1.3 副本(Replication)3.1.4 写入流程3.2 Broker 保存消息3.2.1 存储方式3.2.2 存储策

Kafka集群常见的跨网络访问详解

场景说明:当客户端与服务端在不同区域(跨防火墙,地址均做了映射)时,客户端访问kafka时会出现获取不到broker的问题,但是网络之间是互通的.但在跨防火墙下,client请求zookeeper的时候,zookeeper返回给client的broker IP是kafka的实际地址,而不是映射地址,因此client会访问失败. 解决方式一.1.配置文件:listeners=PLAINTEXT://主机名:90922.服务端hosts:内网地址 主机名 3.客户端hosts :外网地址 主机名 注