flume数据写入gcs报OutOfMemory

问题描述:

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

参考:https://stackoverflow.com/questions/27232966/what-causes-flume-with-gcs-sink-to-throw-a-outofmemoryexception/27235672#27235672xml

相关文章
相关标签/搜索