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

相關文章
相關標籤/搜索