Flume创建小文件

时间:2017-09-08 14:15:27

标签: hadoop flume flume-ng

我正在尝试使用flume从本地系统移动 hdfs 中的文件,但是当我运行我的水槽时,它会创建许多小文件。我原始文件的大小是154 - 500Kb但在我的HDFS中它创建了许多大小为4-5kb的文件。我搜索并了解更改 rollSize rollCount 将会有效,但我仍然会发生同样的问题。我也低于错误。

错误:

  

错误hdfs.BucketWriter:命中最大连续复制不足   轮换(30);因为这条路径不会继续滚动文件   下的复制

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

以下是我的配置。

配置:

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

1 个答案:

答案 0 :(得分:2)

我认为您发布的错误已经足够清楚:您正在创建的文件未得到充分复制(这意味着您正在创建的文件块以及沿群集分布的文件块的副本数量少于复制因子 - 通常3-);当这种情况持续时,不会再进行滚动(因为每次滚动文件时,都会创建一个新的未复制文件,并且已达到允许的最大值-30-。)

我建议您检查文件未被复制的原因。也许这是因为群集磁盘不足,或者因为群集设置的节点数最少-i.e. 3个节点 - 一个是-i.e.只有2个数据节点存活,复制因子设置为3 - 。

其他选项(不推荐)将减少复制因子-even为1-。或者增加允许的重复次数不足的卷数(我不知道这样的事情是否可行,即使有可能,最终你会再次遇到同样的错误)。