Flume 创建小文件

Flume creating small files

我正在尝试使用 flume 从本地系统移动 hdfs 中的文件,但是当我 运行 我的 flume 它是创建许多小文件。我的原始文件大小为 154 - 500Kb,但在我的 HDFS 中它创建了许多大小为 4-5kb 的文件。我搜索并了解到更改 rollSizerollCount 会起作用我增加了值但仍然发生同样的问题。我也遇到了错误。

错误:

ERROR hdfs.BucketWriter: Hit max consecutive under-replication rotations (30); will not continue rolling files under this path due to under-replication

因为我在集群中工作,所以我有点害怕在 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

我认为你发布的错误很清楚:你正在创建的文件复制不足(这意味着你正在创建的文件块,并且沿着集群分布,比复制因子 - 通常为 3-);并且当这种情况及时继续时,将不再进行滚动(因为每次滚动文件时,都会创建一个新的复制不足的文件,并且已达到允许的最大值 -30-)。

我建议您检查文件复制不足的原因。可能这是因为集群 运行 磁盘不足,或者因为集群设置了最少数量的节点 - 即3 个节点 - 其中一个已关闭 - 即只有 2 个数据节点存活并且复制因子设置为 3-.

其他选项(不推荐)将降低复制因子 - 甚至到 1-。或者增加under-replicated rolls的允许数量(我不知道这样的事情是否可能,即使有可能,最后你还是会遇到同样的错误)。