【问题标题】:Flume HDFS Sink generates lots of tiny files on HDFSFlume HDFS Sink 在 HDFS 上生成大量小文件
【发布时间】:2014-11-27 23:30:05
【问题描述】:

我有一个玩具设置,使用 Flume 将 log4j 消息发送到 hdfs。我无法配置 hdfs 接收器以避免许多小文件。我以为我可以配置 hdfs sink 以在每次文件大小达到 10mb 时创建一个新文件,但它仍在创建大约 1.5KB 的文件。

这是我当前的水槽配置:

a1.sources=o1
a1.sinks=i1
a1.channels=c1

#source configuration
a1.sources.o1.type=avro
a1.sources.o1.bind=0.0.0.0
a1.sources.o1.port=41414

#sink config
a1.sinks.i1.type=hdfs
a1.sinks.i1.hdfs.path=hdfs://localhost:8020/user/myName/flume/events
#never roll-based on time
a1.sinks.i1.hdfs.rollInterval=0
#10MB=10485760
a1.sinks.il.hdfs.rollSize=10485760
#never roll base on number of events
a1.sinks.il.hdfs.rollCount=0

#channle config
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

a1.sources.o1.channels=c1
a1.sinks.i1.channel=c1

【问题讨论】:

    标签: hdfs flume flume-ng


    【解决方案1】:

    这是你在conf中的错字。

    #sink config
    a1.sinks.i1.type=hdfs
    a1.sinks.i1.hdfs.path=hdfs://localhost:8020/user/myName/flume/events
    #never roll-based on time
    a1.sinks.i1.hdfs.rollInterval=0
    #10MB=10485760
    a1.sinks.il.hdfs.rollSize=10485760
    #never roll base on number of events
    a1.sinks.il.hdfs.rollCount=0
    

    在“rollSize”和“rollCount”行中,您将 il 设置为 i1。 请尝试使用DEBUG,然后你会发现:

    [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.BucketWriter.shouldRotate:465)  - rolling: rollSize: 1024, bytes: 1024
    

    由于il,使用了rollSize的默认值1024。

    【讨论】:

    • 根据您的示例,据我了解,写入将每 10Mb 发生一次。但是对于 15Mb 文件,什么会触发最后 5Mb 的写入。
    【解决方案2】:

    HDFS Sink 有一个属性hdfs.batchSize(默认为 100),它描述了“在刷新到 HDFS 之前写入文件的事件数”。我认为这是你的问题。

    考虑检查所有其他属性:HDFS Sink

    【讨论】:

    • 不,那也没用。会不会是渠道的原因?
    • 接收器中的批处理是基于时间和基于大小的。你可以考虑像 Edward Capriolo 的 File Crusher github.com/edwardcapriolo/filecrush
    • @Sarge - 但我已经关闭了它的基于时间的版本:a1.sinks.i1.hdfs.rollInterval=0。当然,这一定已经解决了,在 hdfs 中创建大量小文件对节点名称不利。
    【解决方案3】:

    由于内存通道及其容量,这可能会发生。我猜它的容量一满就将数据转储到 HDFS。您是否尝试过使用文件通道而不是内存?

    【讨论】:

    • 是的,我确实使用了相同的文件通道...我觉得我缺少一些基本的东西...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多