Kafka:CorruptRecordException: record size is smaller than mininum record overhead

发现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就可以了。

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值