1
回答
关于flume向hdfs写入文件的问题
注册华为云得mate10,2.9折抢先购!>>>   

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




举报
dedenj
发帖于2年前 1回/1K+阅
共有1个答案 最后回答: 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结尾的。

顶部