flume使用过程中错误记录

2018年4月26日16:10:35 发表评论 1,181 views

本文最后更新于 2018年6月4日 11:42 可能会因为没有更新而失效。如已失效或需要修正,请留言!

1、动态变量使用注意

问题描述:java.lang.IllegalArgumentException: Illegal group reference: group index is missing;使用动态参数传输kafka的topics(regex)时,需要转义特殊字符。

解决办法:特殊字符转义

2、找不到自定义包中的类、方法等

问题描述:org.apache.flume.FlumeException: Unable to load sink type: xxx.xxxx.class;centos在用户1下启动出现上述问题,在其他用户上启动不会出现上述错误。

原因:用户1的环境变量中有FLUME_HOME,而其他用户的环境变量中并没用设置这个FLUME_HOME变量,导致在加载FLUME_CLASSPATH="${FLUME_HOME}/lib/*:$FLUME_CLASSPATH"加载的不是你自定义的flume下的lib,而是系统下flume_home中的lib,从而缺少自定义的包。

解决办法:在启动前导入FLUME_HOME=(当前运行的flume目录)或者修改flume启动脚本,在脚本开始处加入FLUME_HOME=$(cd $(dirname $0)/..; pwd)。

3、flume内存问题

问题描述:09 May 2018 16:14:53,486 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.SinkRunner$PollingRunner.run:158) - Unable to deliver event. Exception follows.
java.lang.IllegalStateException: close() called when transaction is OPEN - you must either commit or rollback first

原因:flume自定义的初始化内存只有20m,比较小,这里需要将其增大。

解决办法:两种

a、修改bin/flume-ng的JAVA_OPTS="-Xms20"增大(eg:JAVA_OPTS="-Xms500m -Xmx1024m").

b、修改conf/flume-env.sh添加JAVA_OPTS="-Xms500m -Xmx1024m"

4、tailsource监控文件的时候监控的文件个数过多。

问题描述:WARN [298821041@qtp-2158302-0 - Acceptor0 SelectChannelConnector@0.0.0.0:34545] (org.mortbay.log.Slf4jLog.warn:89) - EXCEPTION
java.io.IOException: Too many open files

原因:tail监控的时候,source端会open所有满足的需求的文件进行tail,如果文件过多将会导致以上错误,我这边有组数据,10万没有问题,20万出现以上问题。

解决办法:减少监控目录下文件的个数,方法有实时删除已经tail完,和不在会向文件中增加数据的文件。写文件的时候一个一个文件写入,不要同时写多个。

5、flume配置文件中使用${varible}变量的时候,在启动的时候加入以下启动参数。

-DpropertiesImplementation=org.apache.flume.node.EnvVarResolverProperties

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: