【问题标题】:Configuring flume to not generate .tmp files when sinking data to hdfs将数据下沉到 hdfs 时将水槽配置为不生成 .tmp 文件
【发布时间】:2015-07-15 13:51:17
【问题描述】:

我正在使用水槽将数据从服务器日志流式传输到 hdfs。但是,当数据流式传输到 hdfs 时,它首先创建 .tmp 文件。配置中有没有办法可以隐藏 .tmp 文件,或者可以通过附加 .tmp 文件来更改名称。在前。我的收集代理文件看起来像-

## TARGET AGENT ##
## configuration file location:  /etc/flume/conf
## START Agent: flume-ng agent -c conf -f /etc/flume/conf/flume-trg-agent.conf -n collector

#http://flume.apache.org/FlumeUserGuide.html#avro-source
collector.sources = AvroIn
collector.sources.AvroIn.type = avro
collector.sources.AvroIn.bind = 0.0.0.0
collector.sources.AvroIn.port = 4545
collector.sources.AvroIn.channels = mc1 mc2

## Channels ##
## Source writes to 2 channels, one for each sink
collector.channels = mc1 mc2

#http://flume.apache.org/FlumeUserGuide.html#memory-channel

collector.channels.mc1.type = memory
collector.channels.mc1.capacity = 100

collector.channels.mc2.type = memory
collector.channels.mc2.capacity = 100

## Sinks ##
collector.sinks = LocalOut HadoopOut

## Write copy to Local Filesystem
#http://flume.apache.org/FlumeUserGuide.html#file-roll-sink
#collector.sinks.LocalOut.type = file_roll
#collector.sinks.LocalOut.sink.directory = /var/log/flume
#collector.sinks.LocalOut.sink.rollInterval = 0
#collector.sinks.LocalOut.channel = mc1

## Write to HDFS
#http://flume.apache.org/FlumeUserGuide.html#hdfs-sink

collector.sinks.HadoopOut.type = hdfs
collector.sinks.HadoopOut.channel = mc2
collector.sinks.HadoopOut.hdfs.path = /user/root/flume-channel/%{log_type}
collector.sinks.k1.hdfs.filePrefix = events-
collector.sinks.HadoopOut.hdfs.fileType = DataStream
collector.sinks.HadoopOut.hdfs.writeFormat = Text
collector.sinks.HadoopOut.hdfs.rollSize = 1000000

任何帮助将不胜感激。

【问题讨论】:

  • 我已经通过放置 collector.sinks.HadoopOut.hdfs.inUsePrefix= 解决了这个问题。这个前缀“。”在临时文件的前面,使其对其他应用程序不可读
  • 这正是你的做法。
  • 请将下面的答案标记为已接受。
  • issues.apache.org/jira/browse/FLUME-2653 这里表示在 1.8.0 版本中,带有此更改请求的后缀和前缀可以为空。

标签: hadoop hdfs flume flume-ng


【解决方案1】:

Flume 中所有打开写入的文件默认都可以有 .tmp 扩展名。你可以用另一个扩展来改变它。但我们无法避免这种扩展。此外,还需要与已关闭的文件区分开来。 所以最好加一些像“。”这样的后缀。对于打开的文件。 Flume HDFS Sink 提供了几个参数:

hdfs.inUsePrefix – 用于flume主动写入的临时文件的前缀 hdfs.inUseSuffix .tmp 用于flume主动写入的临时文件的后缀

hdfs.inUsePrefix = .

collector.sinks.HadoopOut.hdfs.inUsePrefix = .

hdfs.inUseSuffix = 如果为空则使用 .tmp 否则使用指定的后缀。

【讨论】:

    【解决方案2】:

    设置 hdfs.idleTimeout=x 其中 x 是一个正数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多