gpt4 book ai didi

hadoop - Flume 创建小文件

转载 作者:可可西里 更新时间:2023-11-01 14:48:15 28 4
gpt4 key购买 nike

我正在尝试使用水槽从本地系统将我的文件移动到 hdfs 中,但是当我运行我的水槽时,它会创建许多小文件。我的原始文件大小为 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

最佳答案

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

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

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

关于hadoop - Flume 创建小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46118554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com