Flume HDFS Sink 在 HDFS 上生成大量小文件

2023-12-07

我有一个使用 Flume 向 HDFS 发送 log4j 消息的玩具设置。我无法配置 hdfs 接收器以避免出现许多小文件。我以为我可以配置 hdfs 接收器在每次文件大小达到 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

这是你在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 as i1。 请尝试使用DEBUG,然后你会发现:

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

Due to il,使用默认值 rollSize 1024。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flume HDFS Sink 在 HDFS 上生成大量小文件 的相关文章

随机推荐