关于flume向hdfs写入文件的问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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结尾的。