水槽仍然保留 .tmp 文件并且没有将文件完全复制到 HDFS
Posted
技术标签:
【中文标题】水槽仍然保留 .tmp 文件并且没有将文件完全复制到 HDFS【英文标题】:flume still keep the .tmp file and not copying the file completely to HDFS 【发布时间】:2016-06-21 13:37:28 【问题描述】:您好,我正在使用 flume 将文件从 spooling 目录复制到 HDFS,使用文件作为通道。
#Component names
a1.sources = src
a1.channels = c1
a1.sinks = k1
#Source details
a1.sources.src.type = spooldir
a1.sources.src.channels = c1
a1.sources.src.spoolDir = /home/cloudera/onetrail
a1.sources.src.fileHeader = false
a1.sources.src.basenameHeader = true
# a1.sources.src.basenameHeaderKey = basename
a1.sources.src.fileSuffix = .COMPLETED
a1.sources.src.threads = 4
a1.sources.src.interceptors = newint
a1.sources.src.interceptors.newint.type = timestamp
#Sink details
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = hdfs:///data/contentProviders/cnet/%Y%m%d/
# a1.sinks.k1.hdfs.round = false
# a1.sinks.k1.hdfs.roundValue = 1
# a1.sinks.k1.hdfs.roundUnit = second
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.fileType = DataStream
#a1.sinks.k1.hdfs.file.Type = DataStream
a1.sinks.k1.hdfs.filePrefix = %basename
# a1.sinks.k1.hdfs.fileSuffix = .xml
a1.sinks.k1.threadsPoolSize = 4
# use a single file at a time
a1.sinks.k1.hdfs.maxOpenFiles = 1
# rollover file based on maximum size of 10 MB
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.batchSize = 12
# Channel details
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /tmp/flume/checkpoint/
a1.channels.c1.dataDirs = /tmp/flume/data/
# Bind the source and sink to the channel
a1.sources.src.channels = c1
a1.sinks.k1.channels = c1
通过上述配置,它能够将文件复制到 hdfs,但我面临的问题是一个文件保持为 .tmp 而不是复制完整的文件内容。
谁能帮我解决可能是什么问题。
【问题讨论】:
【参考方案1】:.tmp
文件在被 Flume“滚动”后将重命名为其最终名称。
你所有的翻转设置都是 0,这意味着“永远保持直播”。
将一个或多个设置为非零值确定 Flume 何时认为文件完成,以便它可以关闭它并打开下一个。
有关详细信息,请参阅documentation here on Flume Sinks。
【讨论】:
以上是关于水槽仍然保留 .tmp 文件并且没有将文件完全复制到 HDFS的主要内容,如果未能解决你的问题,请参考以下文章