【问题标题】:flume spooling directory renaming file .completed even before flume agent starts spooling水槽假脱机目录重命名文件。甚至在水槽代理开始假脱机之前完成
【发布时间】:2015-05-09 21:03:47
【问题描述】:

我有如下的水槽代理

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 在水槽代理将该文件写入HDFS之后,文件应该重命名为.COMPLETED,但在我的例子中,它在代理运行之前将文件重命名为.COMPLETED。即使我只是手动将文件复制到假脱机目录,它也会将文件重命名为 .COMPLETED。

还有一个问题是即使文件复制到 HDFS 后,deletepolicy 也不会删除文件。

代理将假脱机目录文件随机写入 HDFS。

它还在 HDFS 中创建了大量的 tmp 文件。

我在编写代理时做错了什么还是我在代理中遗漏了什么......??

请帮我解决这个问题。

提前致谢

【问题讨论】:

    标签: flume spool


    【解决方案1】:

    我怀疑 Flume 的行为符合设计,您可能对事物的顺序感到困惑。您可以查看日志来证明这一点。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-30
      • 2023-04-08
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 2020-07-02
      相关资源
      最近更新 更多