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