flume sink写入到gcs,启动一段时间后报OutOfMemeoryError: Java heap space错误数组
flume-ng设置OPT为-Xmx2000m,flume sink的hdfs.path为动态地址,在拦截器设置,总共约40个左右。缓存
经过jmap命令,导出堆栈信息bash
jmap -dump:format=b,file=jmap.dump 17454
并用VisualVm打开,发现google建立的byte数组消耗了大部份内存oop
在stackoverflow上查到gcs hadoop实现会为每一个文件申请默认64M缓存(byte[]),文件太多会致使OOM。google
解决方法:spa
修改core-site.xml,增长fs.gs.outputstream.upload.chunk.size属性(fs.gs.io.buffersize.write属性也能够,只是已废弃),并设置适当值(2M、8M等);code
重启flume-ng,观察是否重现OOM。orm