2016-11-10 63 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上的單個文件中。 –

相關問題