flume常见报错记录

1.java.nio.channels.ClosedChannelException Unexpected exception from downstream

一般来说,这种错误是source往channel写入数据时错误才有的异常,因此只需根据实际情况去处理就行。但有另一种错误,我们配置zabbix监控flume端口时,会每隔固定时间往source端口建立一个tcp连接。查看NettyServer这样的配置后发现应用的数据是正常接收的,但flume.log日志会不停的打印ClosedChannelException,但实际并不影响其他数据的接收。
通过查看报错的堆栈信息,可以看到该报错出现在Netty 自带的ZlibEncoder编码器,在Handler处理 downstream流处理时间时,触发异常。
flume常见报错记录_第1张图片

2.org.apache.avro.AvroRuntimeException: Excessively large list allocation request detected: 75813348829 items! Connection closed.

这个异常,是配置错误导致的。遇到有两种情况会有该异常,一种是组件之间关系写错,如名为s1的sink用的是c1的channel,但被错误的写成不存在的c2,就会有该错。第二种是source接收的是字符串类型的数据,而配置成接收序列化后的数据avro,则会报这种异常,因此只需将source type改成 netcat即可。
flume常见报错记录_第2张图片
错误很明显,对于netcat字符串型的数据,若是按avro的方式去反序列化,则得出的listSize远大于avro序列化的数据。

3.BadCheckpointException:Configured capacity is 20000 but the checkpoint file capacity is 200000

该异常原因是检查点文件太大了,因此备份检查点甚至删除检查点文件即可。

4.ChannelException

在flume运行期间,某时刻经常抛出ChannelException异常,说明channel的容量达到上限,说明chnanel的分配低于数据写入的速度或者Sink组件消耗Channel中数据的速度不够快。虽然抛出异常导致程序重复执行并不会丢失数据,也因重新考虑flume能力,增加Sink,Channel。

你可能感兴趣的:(flume)