首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水槽创建小文件

水槽创建小文件
EN

Stack Overflow用户
提问于 2017-09-08 14:15:26
回答 1查看 196关注 0票数 2

我试图使用flume将hdfs中的文件从本地系统中移出,但是当我运行我的管道时,它正在创建许多小文件。我的原始文件的大小是154-500 5kb,但在我的HDFS中,它正在创建许多大小为4-5kb的文件。我搜索并了解到,更改rollSizerollCount将有效,我增加了值,但问题仍然存在。此外,我正在得到以下的错误。

错误:

错误hdfs.BucketWriter:按最大连续复制轮次(30);由于复制不足,不会在此路径下继续滚动文件。

当我在集群中工作时,我有点害怕做hdfs-site.xml.中的更改请建议我如何移动HDFS中的原始文件或使小文件更大(而不是4-5kb,使其为50-60 5kb)。

下面是我的配置。

Configuration:

代码语言:javascript
复制
agent1.sources = source1
agent1.sinks = sink1
agent1.channels = channel1
agent1.sources.source1.channels = channel1
agent1.sinks.sink1.channel = channel1
agent1.sources.source1.type = spooldir
agent1.sources.source1.spoolDir = /root/Downloads/CD/parsedCD
agent1.sources.source1.deletePolicy = immediate
agent1.sources.source1.basenameHeader = true
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path = /user/cloudera/flumecd
agent1.sinks.sink1.hdfs.fileType = DataStream
agent1.sinks.sink1.hdfs.filePrefix = %{basename}
agent1.sinks.sink1.hdfs.rollInterval = 0
agent1.sinks.sink1.hdfs.batchsize= 1000
agent1.sinks.sink1.hdfs.rollSize= 1000000
agent1.sinks.sink1.hdfs.rollCount= 0
agent1.channels.channel1.type = memory
agent1.channels.channel1.maxFileSize =900000000
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 10:05:37

我认为您正在发布的错误非常清楚:您正在创建的文件处于复制状态(这意味着您正在创建的文件块以及沿着集群分发的文件的副本少于复制因子-usually 3-);虽然这种情况仍在继续,但不会有更多的滚动操作(因为每次滚动该文件时,都会创建一个新的未复制的文件,并且已经达到了允许的最大值--30)。

我将建议您检查文件为什么未被复制。这可能是因为集群正在耗尽磁盘,或者是因为集群是用最少的节点数量( -i.e )设置的。3个节点-其中一个是下降的-i.e。只有2个数据节点是活动的,复制因子被设置为3-。

其他选项(不建议使用)是将复制因子-even降低到1-。或者增加未复制的滚动的允许数量(我不知道这样的事情是否可能,即使有可能,最终你也会再次经历同样的错误)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46118554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档