关于flume向hdfs写入文件的问题

发布于 2021-12-01 17:52:07 字数 962 浏览 883 评论 1

flume通过spooldir向hdfs写入文件时,为了避免频繁产生新文件,设置了每128M产生一个新文件。

spooldir是每分钟产生大量小文件

但是运行过程中发现一个问题,就是只有在新生成的.tmp会写入第一个读取的spooldir文件的内容,后面的文件在没满128M时不会写入hdfs .tmp文件造成数据丢失(这点想不通,按我理解应该按照batchSize提交,按照rollSize产生新文件)  

请问一下flume专家,我下面的配置方法,flume不是根据batchSize向hdfs写入文件?还是其他参数配置有问题,请指教


agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://locahost:9000/flumetest/%{dicName}
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=0

agent1.sinks.sink1.hdfs.rollSize=128000000
agent1.sinks.sink1.hdfs.filePrefix=cc
agent1.sinks.sink1.hdfs.minBlockReplicas=1
agent1.sinks.sink1.hdfs.batchSize=1000
agent1.sinks.sink1.hdfs.rollCount=0
agent1.sinks.sink1.hdfs.idleTimeout=0
agent1.sinks.sink1.hdfs.txnEventMax=1000




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如日中天 2021-12-03 07:53:00

flume的指定spooldir的话,是只要有数据写入文件,flume服务会去check,发现有新的未读取的文件的话,会获取到然后流向hdfs.但flume不会续传。读取文件的操作就像是一个原子操作,会一次性读完

# For each one of the sources, the type is defined
agent1.sources.seqGenSrc.type = spooldir
agent1.sources.seqGenSrc.spoolDir=/testDir

你可以确认你的spooldir中,已经读取完毕的文件,文件应该都是以.COMPLETED结尾的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文