flume常见报错记录

本文记录了Flume在运行过程中遇到的四种典型错误:ClosedChannelException、AvroRuntimeException、BadCheckpointException和ChannelException,并详细分析了这些错误的原因及对应的解决策略。ClosedChannelException可能由监控连接引起,不影响数据接收;AvroRuntimeException通常是配置错误导致,需要检查组件关系或源数据类型;BadCheckpointException解决方法是调整或删除检查点文件;ChannelException则提示需要关注Channel容量和Sink处理速度的匹配。

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

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

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即可。
在这里插入图片描述
错误很明显,对于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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值