发现kafka的某个topic消费不了了,卡在了某个offset上,查看topic状态,发现 ISR只存活一个,其他的挂了。查看服务日志,一台服务器一直打印 : ERROR [Replica Manager on Broker 1]:Error processing fetch operation on partition XX-1,offset 49700025 [kafka.server.ReplicaManager] org.apache.kafka.common.errors.CorruptRecordException:Record size is smaller than mininum overhead(14)

另一台服务器报错日志为: ERROR [ReplicaFetcher  ] Error for partition  XX-1 to broker 2:org.apache.kafka.common.errors.CorruptRecordException: This message has failed its CRC checksum, exceeds the valid size, or is otherwise corrupt. (kafka.server.ReplicaFetcherThread)

各种百度,谷歌,都毫无头绪,基本都是全英文的,有些在kafka的jira的bug列表中,有些就是各种源码,然后还有说改什么参数的。看英文解释意思大概是,kafka里面的消息大小小于了最小设定的值,然后同步到副本节点报错,然后一直卡在了那条消息的offset。

最终经过了深思熟虑,跟自己的聪明才智,决定进行手动同步主节点的数据到副本节点,其实就是手动拷贝那个报错的topic的partition的文件到副本节点上。

解决方案:

先把kafka服务停掉。

把报错的topic的partition所有文件,从主节点拷贝到副本节点去 。如 XX-1 整个目录拷贝到副本节点并替换,当然,你可以先备份副本节点的数据。然后重要的,查看主节点的 recover-point-offset-checkpoint 和 replication-offset-checkpoint 文件,看你需要的topic的partition的offset的数值是多少,然后修改副本节点的 这两个文件的这个参数。

最后重启kafka就可以了。

发现kafka的某个topic消费不了了,卡在了某个offset上,查看topic状态,发现 ISR只存活一个,其他的挂了。查看服务日志,一台服务器一直打印 :ERROR [Replica Manager on Broker 1]:Error processing fetch operation on partition XX-1,offset 49700025 [kafka.server.Rep...
今天启动 kafka 遇到了一个问题 问题指出 kafka 的日志有问题,每次启动之后都直接断开连接,一直监听不到 kafka 的端口,后面删除当日日志,启动之后看了一下日志,以上为日志给出的错误,找到日志报错信息后,相处对应的文件后,重新启动 kafka 即可
原因是发布到zookeeper的advertised.host.name如果没有设置,默认取java.net.InetAddress.getCanonicalHostName().值,被用于生产端和消费端。因此外部网络或者未配置hostname映射的机器访问 kafka 集群时就会有网络问题了。 原因是 kafka 客户端连接到broker是成功的,但连接到集群后更新回来的集群meta信息是错误的即是会...
1,基本概念 kafka 使用日志保存生产者发送的message,每条消息都有一个offset值表示它在partition中的偏移量,offset类似于主键,唯一确定库中的一条记录。 一个topic对应多个partition,一个partition对应多个副本,无论是leader副本,还是follower都被分配到某个Broker上面,一个副本对应一个Log存放数据,避免log太大,又分成了log 分段保存数据。所以最终体现在磁盘上面的就是log分段。 为了提高查询消息的效率,为每个...
原因分析: 根据报错内容可知,发送消息时,broker已经不是对应分区的leader了,也就是说问题发生在leader重选举时,由于报错相对比较频繁,即重选举的动作发生的比较频繁,所以问题的重点就是分析是什么原因导致了leaderf发生了重选举。 关于 kafka 的leadert重选举以及都有哪些情况可能触发重选举,这里不在详细说明,具体可以参考:https://shirenc
Caused by: org.apache. kafka .common. Kafka Exception : Received exception when fetching the next record from t_vpn-2. If needed, please seek past the record to continue consumption. Caused by: org.apache. kafka .common. Kafka Exception : Record batch for partition
生产者固定key,导致消息集中在某个partition 现象: 服务端接收到的消息集中在固定partition上 原因: kafka 生产端默认按照消息key来路由具体的broker机器 解决: 不要指定key,如果需要保证业务上的顺序,就指定key为业务变量 错误代码示例: String key = "aa"; producer.send(new Producer Record <>("TOIPICA",key,"这是内容")) //代码的问题在于,把消息的key硬编码了,导致消息