在Flume的官方文档中可以看出, flume是存在小文件问题的(默认10个Event,或者1kb在Hdfs上创建一个文件; 不够10个Event, 在30s内创建一个.tmp文件). 官方配置如下所示:
hdfs.rollInterval 30 Number of seconds to wait before rolling current file (0 = never roll based on time interval)
hdfs.rollSize 1024 File size to trigger roll, in bytes (0: never roll based on file size)
hdfs.rollCount 10 Number of events written to file before it rolled (0 = never roll based on number of events)
企业解决小文件问题的方式:
#时间: 1个小时生成一个新的文件3600 或者 半小时生成一个文件1800
a1.sinks.k1.hdfs.rollInterval = 1800
#大小: 设置每个文件的滚动大小大概为128MB(为了避免由于下一个event的加入导致整个文件需要进行切片)
a1.sinks.k1.hdfs.rollsize = 134217700
#Event: 文件的滚动Event的数量无关(Event默认值为10)
a1.sinks.k1.hdfs.rollCount = 0