解决flume在抽取不断产生的日志文件时,hdfs上出现很多小文件的问题
问题
在使用flume时,需要编写conf文件,然后执行,明明sinks已经指定了roll的三个参数:
a1.sinks.k1.hdfs.rollInterval = 0
(根据写入时间来切割)
a1.sinks.k1.hdfs.rollSize = 0
(根据写入的文件大小来切割)
a1.sinks.k1.hdfs.rollCount = 0
(根据Event数量来切割)
其中0代表不根据其属性来切割文件
但是hdfs上还会出现很多的小文件
解决办法
因为文件会因为所在块的复制而滚动文件,所以设置的roll参数没起作用
此时只需要在编写的conf文件中添加上:
a1.sinks.k1.hdfs.minBlockReplicas = 1
即可,此时hdfs上的文件数量会根据设置的roll属性来决定!