flume数据写入gcs报OutOfMemory

原创
2019/09/15 19:58
阅读数 47

问题描述:

flume sink写入到gcs,启动一段时间后报OutOfMemeoryError: Java heap space错误

flume-ng设置OPT为-Xmx2000m,flume sink的hdfs.path为动态地址,在拦截器设置,总共约40个左右。

 

排查步骤:

通过jmap命令,导出堆栈信息

jmap -dump:format=b,file=jmap.dump 17454

并用VisualVm打开,发现google创建的byte数组消耗了大部分内存

在stackoverflow上查到gcs hadoop实现会为每个文件申请默认64M缓存(byte[]),文件太多会导致OOM。

 

解决方法:

修改core-site.xml,增加fs.gs.outputstream.upload.chunk.size属性(fs.gs.io.buffersize.write属性也可以,只是已废弃),并设置适当值(2M、8M等);

重启flume-ng,观察是否重现OOM。

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

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部