解决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上还会出现很多的小文件

解决flume在抽取不断产生的日志文件时,hdfs上出现很多小文件的问题_第1张图片

解决办法

因为文件会因为所在块的复制而滚动文件,所以设置的roll参数没起作用
此时只需要在编写的conf文件中添加上:
a1.sinks.k1.hdfs.minBlockReplicas = 1
即可,此时hdfs上的文件数量会根据设置的roll属性来决定!

解决flume在抽取不断产生的日志文件时,hdfs上出现很多小文件的问题_第2张图片

你可能感兴趣的:(flume,hdfs,大数据)