【问题标题】:Buffer underflow while fetching message from Kafka从 Kafka 获取消息时缓冲区下溢
【发布时间】:2016-09-29 02:31:06
【问题描述】:

我正在为流处理设置风暴,我的 trident spout 正在从 kafka 主题中获取数据,但是我在从 kafka 获取消息时不断收到 BufferUnderFlowException:

java.lang.RuntimeException: java.lang.RuntimeException: java.nio.BufferUnderflowException 在 backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128) ~[storm-core-0.9.5.jar:0.9.5] 在 backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99) ~[storm-core-0.9.5.jar:0.9.5] 引起:java.lang.RuntimeException: java.nio.BufferUnderflowException 在storm.kafka.KafkaUtils.fetchMessages(KafkaUtils.java:177)~[stormjar.jar:na] 在storm.kafka.trident.TridentKafkaEmitter.fetchMessages(TridentKafkaEmitter.java:132)~[stormjar.jar:na] 在storm.kafka.trident.TridentKafkaEmitter.doEmitNewPartitionBatch(TridentKafkaEmitter.java:113)~[stormjar.jar:na]

原因:java.nio.BufferUnderflowException: null 在 java.nio.HeapByteBuffer.get(HeapByteBuffer.java:151) ~[na:1.8.0_05] 在 java.nio.ByteBuffer.get(ByteBuffer.java:715) ~[na:1.8.0_05] 在 kafka.api.ApiUtils$.readShortString(ApiUtils.scala:40) ~[stormjar.jar:na]

我用的storm版本是0.9.5,kafka有2.11版本。我无法理解是什么在这里造成了问题。

【问题讨论】:

  • 您确定对生产者和拓扑中的消息和密钥使用相同的序列化器和反序列化器吗?
  • 谢谢@ChrisGerken,这真的解决了我的问题:)

标签: apache-kafka apache-storm trident


【解决方案1】:

如果您使用与代理不同版本的 Kafka 客户端,则可能会出现类似错误。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2019-08-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多