flume遇到的问题总结;spooldir与exec区别【GC overhead limit exceeded ;Java heap space】(forty-three day)

问题一:

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遇到的问题总结;spooldir与exec区别【GC overhead limit exceeded ;Java heap space】(forty-three day)_第1张图片

否则会显示找不到

 

用flume的exec方式去实时监控日志文件的话,那就意味着只能监控一个文件,那么如果我的日志文件是用tomcat生成的日志文件,而且是每天生成一个日志文件,日志文件不断追加日志内容。

如果是每天都切分日志的话就用spooldir

  • ExecSource:以运行Linux命令的方式,持续的输出最新的数据,如tail -F 文件名指令,在这种方式下,取的文件名必须是指定的。 ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法保证日志数据的完整性。
  • SpoolSource:监测配置的目录下新增的文件,并将文件中的数据读取出来。

你可能感兴趣的:(向大数据进军~每天记)