我需要您的帮助来检查为什么水槽花费时间将平面文件上传到HDFS。我尝试上传只有1个文件(10MB大小)但是,17个小时后它还在用#34; .tmp"上传。当我查看日志详细信息时,它似乎陷入了频道:
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-1
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-2
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-3
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-4
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-5
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-6
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-7
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-8
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.EventQueueBackingStoreFile CheckpointBackupCompleted
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-9
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-10
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-11
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-12
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-13
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-14
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-15
11月10日,X:XX:XX.XXX PM INFO org.apache.flume.channel.file.LogFile关闭RandomReader / data5 / flumedata / log-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 :(得分:0)
我认为所有数据都已发送。您可以检查要发送的文件是否已移至file.name.COMPLETED
。如果已将其删除,则该文件应已发送。
但是,由于数据是批量传输的,因此可能仍有一些数据仍在文件通道中。如果剩下的数据大小小于批量大小,它将保留在通道中。
为了完成发送,您可以使用kill -SIGTERM flume_process_id
来终止该过程。当水槽收到此信号时,它会清除留给HDFS的所有数据。并且将重命名HDFS上的文件,即删除.tmp
后缀。