即使在水槽代理开始假脱机之前,水槽假脱机目录重命名文件.completed

时间:2015-04-13 06:36:11

标签: flume spool

我有以下水槽剂

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帮助我解决这个问题。

先谢谢

1 个答案:

答案 0 :(得分:0)

我怀疑Flume表现得像设计的那样,你可能会对事情的顺序感到困惑。您可以查看日志来证明这一点。

Flume是一个队列。 spooldir源将从文件中读取行并将它们放入队列,然后删除或重命名该文件。该操作序列中没有任何内容等待将事件写入接收器。

正如我所说,你可以阻止HDFS,你会在日志中看到这种行为。 queueSize上的MemChannel会增加,直到您重新启用HDFS。