问题一:
Exception in thread “PollableSourceRunner-SQLSource-sourceTest” java.lang.OutOfMemoryError: GC overhead limit exceeded
同理:Java heap space
解决:
进入flume bin修改flume-ng文件:
配置jvm参数
JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xmn1024m -XX:SurvivorRatio=4 -XX:+DisableExplicitGC -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
红框的地方默认是20m,可以根据自己服务器内存大小设置,这是我自己配的。
问题二:
Transaction Capacity of Memory Channel cannot be higher than the capacity.(Transaction Capacity不能比capacity高)
修改下面的参数(自己看着改吧)
## event条数
ag1.channels.channel1.capacity = 5000
##flume事务控制所需要的缓存容量600000条event
ag1.channels.channel1.transactionCapacity = 600000
问题三:
bin/flume-ng agent -c conf/ -f tail-hdfs.properties -n agent1 -Dflume.root.logger=INFO,console
启动命令-n后面的名字要和配置文件中的一致
否则会显示找不到
用flume的exec方式去实时监控日志文件的话,那就意味着只能监控一个文件,那么如果我的日志文件是用tomcat生成的日志文件,而且是每天生成一个日志文件,日志文件不断追加日志内容。
如果是每天都切分日志的话就用spooldir
- ExecSource:以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。 ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法保证日志数据的完整性。
- SpoolSource:监测配置的目录下新增的文件,并将文件中的数据读取出来。