【问题标题】:Flume creating small filesFlume 创建小文件
【发布时间】:2017-09-08 14:15:26
【问题描述】:

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

错误:

ERROR hdfs.BucketWriter: Hit max Continuous under-replication 旋转 (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

【问题讨论】:

    标签: hadoop flume flume-ng


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多