当前位置: 首页 > 知识库问答 >
问题:

将水槽配置为在将数据下沉到hdfs时不生成. tmp文件

阎德义
2023-03-14

我使用flume将服务器日志中的数据传输到hdfs中。但是当数据流入hdfs时,它首先创建。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

任何帮助都将不胜感激。

共有2个答案

葛浩阔
2023-03-14

设置< code>hdfs.idleTimeout=x,其中x是一个正数

赫连淳
2023-03-14

默认情况下,Flume中打开用于写入的所有文件都可以具有.tmp扩展名。您可以使用另一个扩展来更改此设置。但我们无法避免这种扩展。此外,还需要区分关闭的文件。因此,对于打开的文件,最好使用“.”这样的后缀。水槽HDFS水槽提供了几个参数:

HDFS . inuse Prefix–前缀,用于flume主动写入hdfs.inUseSuffix的临时文件。tmp后缀,用于flume主动写入的临时文件

hdfs。inUsePrefix=。

collector.sinks.HadoopOut.hdfs.in使用前缀=。

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

 类似资料:
  • 我有一个问题。我使用apache flume从txt文件中读取日志,并将其存储到hdfs中。不知何故,一些记录在阅读时被跳过了。我正在使用fileChannel,请检查以下配置。 请帮帮忙。

  • 我正在使用水槽从kafka主题HDFS文件夹加载消息。所以, 我创建了一个主题 TT 我通过Kafka控制台制作人向 TT 发送了消息 我配置了水槽代理 FF 运行 flume agent flume-ng agent -n FF -c conf -f flume.conf - Dflume.root.logger=INFO,console 代码执行停止,没有错误,并且不会向 HDFS 写入任何内

  • 当hdfs不可用时,是否有方法确保数据安全?场景是:kafka源,flume内存通道,hdfs接收器。如果水槽服务关闭了,它是否可以存储主题分区的偏移量,并在恢复后从正确的位置消费?

  • 我正在使用flume将本地文件源到HDFS接收器,下面是我的conf: 我使用用户“flume”来执行这个conf文件。 但它显示我找不到本地文件,权限被拒绝 如何解决这个问题?

  • 我有一个假脱机目录,所有json文件都在其中,每秒钟都会有传入的文件被添加到这个目录中,我必须反序列化传入的json文件,获取requires字段并将其附加到HDFS目录中。 我所做的是我创建了一个 flume conf 文件,其中将假脱机目录中的文件作为源,并使用 1 个接收器将 json 文件直接放入 HDFS 中。 我必须在Sink之前将这个json转换成结构化格式,并将其放入HDFS。最重

  • 我遇到了Flume的问题(Cloudera CDH 5.3上的1.5): 我想做的是:每5分钟,大约20个文件被推送到假脱机目录(从远程存储中抓取)。每个文件包含多行,每行是一个日志(在JSON中)。文件大小在10KB到1MB之间。 当我启动代理时,所有文件都被成功推送到HDFS。1分钟后(这是我在flume.conf中设置的),文件被滚动(删除. tmp后缀并关闭)。 但是,当在假脱机目录中找到