flume往Kafka里写数据报错:
04 Jul 2018 20:43:44,401 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:748)
是由于flume版本为1.7,kafka版本较老为0.8,不兼容所致,将kafka版本升级为0.11或flume版本使用1.6解决!
注:flume1.6及以前的版本没有TAILDIR(org.apache.flume.source.taildir.TaildirSource)这个source type,这个类型支持目录变化的文件,断点续传,1.6版本想要使用这个功能需要将1.7版中Taildir Source 组件源码编译打包后,放入 Flume1.6 安装目录的 lib 文件目录下。
在 Flume配置文件中指定全类名即可使用 TaildirSource 组件。
a1.sources.r1.type = com.xxx.flume.source.TaildirSource