2016-11-10 24 views
0

我需要得到您的帮助以检查flume为什么需要花费时间将平面文件上传到HDFS。我尝试上载了1个文件(10MB大小),但17小时过去了,它仍然以“.tmp”上传。当我检查了日志详细信息,就好像它卡在通道:Flume需要时间将文件上传到HDFS

11月10日,X:XX:XX.XXX PM信息org.apache.flume.channel.file.LogFile关闭RandomReader /数据5/flumedata/log-1是

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-2

11月10日,X :XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/data5/flumedata/log-3

Nov 10,X:XX:XX.XXX PM INFO org.apache.flum e.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-4-

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-5

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /登录6

11月10日,X: XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /登录7

11月10日,X:XX:XX.XXX PM INFO org.apache.flume。 channel.file.LogFile关闭RandomReader/data5/flumed ATA /对数8

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.EventQueueBackingStoreFile CheckpointBackupCompleted

11月10日,X:XX:XX.XXX PM INFO有机.apache.flume.channel.file.LogFile关闭RandomReader/data5/flumedata/log-9

Nov 10,X:XX:XX.XXX PM INF INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-10

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /登入11

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-12

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader/DATA5/flumedata /日志-13

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile闭RandomReader/DATA5/flumedata /日志-14

11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile闭RandomReader/DATA5/flumedata /日志-15

Nov 10,X:XX:XX.XXX PM INFO org.apache.flume.channel.file。日志文件关闭RandomReader /数据5/flumedata /注销16

下面是配置:

agent.sources = source1 
agent.channels = channel1 
agent.sinks = sinks1 

agent.sources.source1.type = spooldir 
agent.sources.source1.spoolDir = /data1/forupload 
agent.sources.source1.channels = channel1 
agent.sources.source1.basenameHeader = true 


agent.channels.channel1.type = file 
agent.channels.channel1.capacity = 1000000 
agent.channels.channel1.transactionCapacity = 10000 
agent.channels.channel1.checkpointDir = /data5/checkpoint 
agent.channels.channel1.dataDirs = /data5/flumedata 
agent.channels.channel1.useDualCheckpoints = true 
agent.channels.channel1.backupCheckpointDir = /data5/backupcheckpoint 
agent.channels.channel1.maxFileSize = 900000000 

agent.sinks.sinks1.type = hdfs 
agent.sinks.sinks1.hdfs.path = /user/flume 
agent.sinks.sinks1.hdfs.filetype = DataStream 
agent.sinks.sinks1.channel = channel1 
agent.sinks.sinks1.hdfs.filePrefix = %{basename} 
agent.sinks.sinks1.hdfs.fileSuffix = .csv 
agent.sinks.sinks1.hdfs.rollInterval = 0 
agent.sinks.sinks1.hdfs.rollSize = 0 
agent.sinks.sinks1.hdfs.rollCount = 0 

欣赏这个

回答

0

你的帮助,我认为所有的数据已发送。您可以检查您要发送的文件是否已被删除到file.name.COMPLETED。如果它已被删除,该文件应该已经发送。

但是,可能有一些数据仍在文件通道中,因为数据是批量传输的。如果剩余数据的大小小于批量大小,它将留在通道中。

为了完成发送,您可以使用kill -SIGTERM flume_process_id来终止进程。当flume接收到这个信号时,它将清除所有留给HDFS的数据。并且HDFS上的文件将被重命名,即删除.tmp后缀。

+0

谢谢你的回应!实际上,我正在寻找可以有效使用Flume的选项,而无需人员手动终止进程以将所有数据全部上传到HDFS,消除漫长的等待时间并在上传时将其保持为1个文件(因为从现在开始文件分割)。我错过了配置中的任何东西吗? – bertsnipe

+0

@bertsnipe Flume将源数据流传输到目的地。它假设数据是无止境的。因此,当您将另一个文件放入假脱机目录时,Flume会将新文件发送到通道,并且剩下的第一个文件的任何数据将发送到sink和hdfs。如果你只想用Flume发送一个文件,你必须手动清除它。我也是Flume的新手,如果你有更好的解决方案,请纠正我。 –

+0

另外,您的HDFS接收器配置禁止滚动文件。所以所有的数据都应该放在HDFS上的单个文件中。 –

相关问题