在虚拟机上启动Flume时报内存不足的错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
第一反应以为是虚拟机的内存太小,但每个虚拟机至少都有2G的内存,而且仅仅只启动了flume,所以光启动flume就报错,应该不是这个原因。
第二反应是flume的channel是使用的memory存储的类型,于是改成file存储试试:
a2.channels.c2.type = file
a2.channels.c2.checkpointDir = /opt/module/flume/checkpoint
a2.channels.c2.dataDirs = /opt/module/flume/data
但是重启还是报错,回头想一下在flume还没有启动完成的时候,应该还没有到channel这一步,也不是这个问题。
最后试了下改变flume本身的Java内存配置,第一个地方是flume安装目录/conf/flume-env.sh
中的配置:
export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
报错依然存在,第二个地方是flume安装目录/bin/flume-ng
中
将JAVA_OPTS="-Xms20m" 改为
JAVA_OPTS="-Xms200m"
重新启动flume成功。
另外多个agent串联的情况下,注意先启动后面的agent再启动前面的agent,否则会报错:
20/09/16 14:00:48 WARN sink.AbstractRpcSink: Unable to create Rpc client using hostname: hadoop100, port: 4141
org.apache.flume.FlumeException: NettyAvroRpcClient { host: hadoop100, port: 4141 }: RPC connection error