在 flume 与 kafka 对接的数据流中出现的问题

java.nio.BufferUnderflowException

flume 日志中报错信息如下:

ERROR [kafka-producer-network-thread | producer-1] (org.apache.kafka.clients.producer.internals.Sender.run:130)  - Uncaught error in kafka producer I/O thread: 
org.apache.kafka.common.protocol.types.SchemaException: Error reading field 'throttle_time_ms': java.nio.BufferUnderflowException
	at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:71)
	at org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:439)
	at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:265)
	at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:216)
	at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:128)
at java.lang.Thread.run(Thread.java:745

经排查, 发现是 flume 与 kafka 的版本兼容性问题

原因: flume 和 kafka 版本不兼容, 使用 flume 1.7 对接 kafka 0.8 导致

解决: 使用 flume 1.7 对接 kafka 0.11 或者 使用 flume 1.6 对接 kafka 0.8

注意如果安装了多个版本, 需要删除 flume 和 kafka 的环境变量, 否则即使启动时使用绝对路径, 也会调用环境变量中指定版本的环境, 导致版本错误

删除环境变量之后别忘了 source 一下

测试环境中重启 flume 和 kafka 后数据流恢复正常

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐