flume spooldir 处理大量文件报错如何解决?

问答 小鱼 ⋅ 于 2018-05-15 17:28:45 ⋅ 最后回复由 青牛 2018-05-17 23:02:41 ⋅ 3281 阅读

我 flume 用spooldir source监控目录抽取文件,随便建一个监控目录用作测试完全没问题,但实际启动时,要抽取文件的目录里已经存在10万多个小文件,总大小100多个G,这些文件个数还会源源不断的扩大,才启动就报错GC overhead limit exceeded;

于是我在网上各种查资料,修改了flume-env.sh,添加JAVA_OPTS=“-Xms8g -Xmx16g” 并且把source中的batchSize改大到100000,channel中的capacity都调大,再启动依然报同样的错……

难道flume spooldir模式真的是不管目录下有多少文件,都会一次性取走么?而不能一批一批的拿?

然后我再研究其参数,发现有一个consumerOrder,默认配置oldest,还可以配置youngest、random

我看官网flume-1.8的文档中说:oldest意思是抽取数据时判断从最早的数据抽起,和youngest从最新数据开始抽一样,都会scan所有文件来判断是否是最老或最新的文件;而random是随机的意思、也就是从任意文件开始、不用扫描整个目录??

我以为这是出现内存溢出这个错误的主要原因了,就是,默认值让它扫描了整个目录来找最早的文件、内存不够用了,于是我把该参数配置为random,再次启动…………特么的还是报同样的错:GC overhead limit exceeded……

文件是不断追加的,而现在是测试阶段、所以我尝试过删除部分数据,只剩3万条,再开flume,就可以抽了,可是跑不了多久,它又会报同样的错……现在不知道该如何解决了

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2018-05-17 23:02:41

    对象数是小文件数乘以batchSize了吧,也就是10万乘以1000了个对象了吧

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter