我有以下水槽剂
agent1.sources = Weather
agent1.sources.Weather.type = spooldir
agent1.sources.Weather.spoolDir = /Weather/Docs
agent1.sources.Weather.channels = MemChannel
agent1.channels = MemChannel
agent1.channels.MemChannel.type = memory
agent1.channels.MemChannel.capacity = 10000
agent1.channels.MemChannel.transactionCapacity = 1000
agent1.channels.MemChannel.deletePolicy = immediate
agent1.sinks = HDFS
agent1.sinks.HDFS.channel = MemChannel
agent1.sinks.HDFS.type = hdfs
agent1.sinks.HDFS.hdfs.path = hdfs://localhost:8020/user/flume/input/
agent1.sinks.HDFS.hdfs.fileType = DataStream
agent1.sinks.HDFS.hdfs.writeFormat = Text
agent1.sinks.HDFS.hdfs.batchSize = 1000
agent1.sinks.HDFS.hdfs.rollSize = 0
agent1.sinks.HDFS.hdfs.rollCount = 10000
假脱机目录中的文件会自动重命名为.COMPLETED 在flume代理将该文件写入HDFS之后,文件应重命名为.COMPLETED但在我的情况下,在代理运行之前将文件重命名为.COMPLETED。它也将文件重命名为.COMPLETED,即使我只是手动将文件复制到假脱机目录。
另一个问题是deletepolicy即使在将文件复制到HDFS后也没有删除文件。
代理将假脱机目录文件随机写入HDFS。
它还在HDFS中创建了大量的tmp文件。
我在写代理时做错了什么,或者我在代理商中错过了什么...... ??
pLease帮助我解决这个问题。
先谢谢
答案 0 :(得分:0)
我怀疑Flume表现得像设计的那样,你可能会对事情的顺序感到困惑。您可以查看日志来证明这一点。
Flume是一个队列。 spooldir源将从文件中读取行并将它们放入队列,然后删除或重命名该文件。该操作序列中没有任何内容等待将事件写入接收器。
正如我所说,你可以阻止HDFS,你会在日志中看到这种行为。 queueSize
上的MemChannel
会增加,直到您重新启用HDFS。