实时处理程消费kafka异常:ERROR kafka.server.ReplicaManager

1 篇文章 0 订阅
1 篇文章 0 订阅

问题描述

实时处理程序:streaming消费kafka一段时间后,报错:ERROR kafka.server.ReplicaManager: [Replica Manager on Broker 105]: Error processing fetch operation on partition [TOPICXXXX,1] offset 57479118
java.lang.IllegalStateException: Failed to read complete buffer for targetOffset 61099082 startPosition 2147483494 in /opt/data/kafka/data/TOPICXXXX-1/00000000000043109340.log

2019-01-10 10:05:01,732 ERROR kafka.server.ReplicaManager: [Replica Manager on Broker 105]: Error processing fetch operation on partition [CLLSEN-BRIDGE-HF-STRAIN,1] offset 57479118
java.lang.IllegalStateException: Failed to read complete buffer for targetOffset 61099082 startPosition 2147483494 in /opt/data/kafka/data/TOPICXXXX-1/00000000000043109340.log
 at kafka.log.FileMessageSet.searchFor(FileMessageSet.scala:137)
 at kafka.log.LogSegment.translateOffset(LogSegment.scala:106)
 at kafka.log.LogSegment.read(LogSegment.scala:151)
 at kafka.log.Log.read(Log.scala:532)
 at kafka.server.ReplicaManager$$anonfun$readFromLocalLog$1.apply(ReplicaManager.scala:543)
 at kafka.server.ReplicaManager$$anonfun$readFromLocalLog$1.apply(ReplicaManager.scala:513)
 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
 at scala.collection.immutable.Map$Map4.foreach(Map.scala:188)
 at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
 at scala.collection.AbstractTraversable.map(Traversable.scala:104)
 at kafka.server.ReplicaManager.readFromLocalLog(ReplicaManager.scala:513)
 at kafka.server.ReplicaManager.fetchMessages(ReplicaManager.scala:468)
 at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:496)
 at kafka.server.KafkaApis.handle(KafkaApis.scala:77)
 at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
 at java.lang.Thread.run(Thread.java:745)
2019-01-10 10:05:01,733 ERROR kafka.server.ReplicaManager: [Replica Manager on Broker 105]: Error processing fetch operation on partition [TOPICXXXX,1] offset 57479118
java.lang.IllegalStateException: Failed to read complete buffer for targetOffset 61099082 startPosition 2147483494 in /opt/data/kafka/data/TOPICXXXX-1/00000000000043109340.log
 at kafka.log.FileMessageSet.searchFor(FileMessageSet.scala:137)
 at kafka.log.LogSegment.translateOffset(LogSegment.scala:106)
 at kafka.log.LogSegment.read(LogSegment.scala:151)
 at kafka.log.Log.read(Log.scala:532)
 at kafka.server.ReplicaManager$$anonfun$readFromLocalLog$1.apply(ReplicaManager.scala:543)
 at kafka.server.ReplicaManager$$anonfun$readFromLocalLog$1.apply(ReplicaManager.scala:513)
 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
 at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
 at scala.collection.immutable.Map$Map4.foreach(Map.scala:188)
 at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
 at scala.collection.AbstractTraversable.map(Traversable.scala:104)
 at kafka.server.ReplicaManager.readFromLocalLog(ReplicaManager.scala:513)
 at kafka.server.ReplicaManager.fetchMessages(ReplicaManager.scala:468)
 at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:496)
 at kafka.server.KafkaApis.handle(KafkaApis.scala:77)
 at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
 at java.lang.Thread.run(Thread.java:745)

实时处理程序:storm消费kafka一段时间后,也报错以上错误!

程序消费不过来吗还是别的原因呢?

原因分析:

    由于程序消费不过来,kafka中的消息数据已经过时了。但是我配置的是保留7天啊?而且也没有配置消息保存的大小。重新修改groupid消费也是重最新的消息(auto.offset.reste=latest);怎么疯狂的报错,由于数据量很大,导致日志非常快:1小时将近20G的日志,没过几天服务器就磁盘满了,集群都崩溃了。。。。

解决方式:

1、暂时解决方法:修改group,重新启动程序!但是跑几个小时到1天又会复现问题!!

2、其他尝试解决方法:经过对kafka源码研究,发现原因大概是:因为2147483646这个数字的问题,做好是字节的整数倍,不能随意填写。否则当kafka数据写到最后一行时,会强制重新生成一个文件,而如果不是字节的整数倍,切分就导致出问题。

因此,当你的文档达到2G切换文件的时候就出现那个问题啦,多多注意吧!

解决方法:修改kafak配置:::修改:log.segment.bytes 

 

 

 

修改为:

重启后,发现没问题了!!!

====================================

 

 

 

 

 

 

 

 

 

 

 

 

其他配置参考:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值