大数据开发-Flume-频繁产生小文件原因和处理

在使用Flume上传实时数据到HDFS时,可能会遇到小文件问题。本文分析了Flume滚动配置无效的原因,指出当配置的滚动条件与HDFS块复制冲突时会导致频繁生成新文件。解决方案是在Flume配置中设置`hadoop.hdfs.replication`属性为1,以避免因文件块复制导致的异常滚动,确保按预期参数控制文件滚动。
摘要由CSDN通过智能技术生成

1.问题背景

通过flume直接上传实时数据到hdfs,会常遇到的一个问题就是小文件,需要调参数来设置,往往在生产环境参数大小也不同

1.flume滚动配置为何不起作用?

2.通过源码分析得出什么原因?

3.该如何解决flume小文件?

2. 过程分析

接着上一篇,https://blog.csdn.net/hu_lichao/article/details/110358689

本人在测试hdfs的sink,发现sink端的文件滚动配置项起不到任何作用,配置如下:

a1.sinks.k1.type=hdfs  
a1.sinks.k1.channel=c1  
a1.sinks.k1.hdfs.useLocalTimeStamp=true  
a1.sinks.k1.hdfs.path=hdfs://linux121:9000/user/data/logs/%Y-%m-%d
a1.sinks.k1.hdfs.filePrefix=XXX  
a1.sinks.k1.hdfs.rollInterval=60  
a1.sinks.k1.hdfs.rollSize=0  
a1.sinks.k1.hdfs.rollCount=0  
a1.sinks.k1.hdfs.idleTimeout=0   

这里配置的是60秒,文件滚动一次,也就每隔60秒,会新产生一个文件【前提,flume的source端有数据来】这里注意 useLocalTimeStamp 是使用本地时间戳来对hdfs上的目录来命名,这个属性的目的就是相当于时间戳的拦截器,否则%Y 等等这些东西都识别不了

要么用上面这个属性,要么用时间戳拦截器。但是当我启动flume的时候,运行十几秒,不断写入数据,发现hdfs端频繁的产生文件,每隔几秒就有新文件产生而且在flume的日志输出可以频繁看到这句:

[WARN] Block Under-replication detected. Rotating file.

只要有这句,就会产生一个新的文件,意思就是检测到复制块正在滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值