1. 程式人生 > >flume agent tail source用vim編輯後全文重寫的問題

flume agent tail source用vim編輯後全文重寫的問題

2013-01-25

周海漢 2013.1.25 http://abloz.com

在flume master中配置agent的configure如下:

 config ag1 tail("/home/zhouhh/cars.csv",startFromEnd=true) |agentSink("hadoop48",35853);
 config co1 collectorSource( 35853 )|[collectorSink( "hdfs://hadoop48:54310/user/flume/%y%m/%d","%{host}-",5000,raw),collectorSink( "hdfs://hadoop48:54310/user/flume/%y%m","%{host}-",10000,raw)];

但是發現,如果重啟agent,則agent會重新讀取tail

 [[email protected] ~]$ flume-daemon.sh stop node -n ag1
 stopping node
 [[email protected] ~]$ flume-daemon.sh start node -n ag1
 starting node, logging to /home/zhouhh/flume-distribution-0.9.4/logs/flume-zhouhh-node-Hadoop46.out




[[email protected] ~]$ hadoop fs -ls /user/flume/1301
 -rw-r--r-- 2 zhouhh supergroup 261 2013-01-25 11:16 /user/flume/1301/Hadoop46-20130125-111627296+0800.2334041655608560.00000021
 -rw-r--r-- 2 zhouhh supergroup 261 2013-01-25 11:17 /user/flume/1301/Hadoop46-20130125-111738299+0800.2334112657728560.00000021




這兩個檔案內容一樣。
 再重啟,又增加一個。
 [
[email protected]
~]$ flume-daemon.sh stop node -n ag1 stopping node [[email protected] ~]$ flume-daemon.sh start node -n ag1 starting node, logging to /home/zhouhh/flume-distribution-0.9.4/logs/flume-zhouhh-node-Hadoop46.out [[email protected] ~]$ hadoop fs -ls /user/flume/1301 -rw-r--r-- 2 zhouhh supergroup 261 2013-01-25 11:16 /user/flume/1301/Hadoop46-20130125-111627296+0800.2334041655608560.00000021 -rw-r--r-- 2 zhouhh supergroup 261 2013-01-25 11:17 /user/flume/1301/Hadoop46-20130125-111738299+0800.2334112657728560.00000021 -rw-r--r-- 2 zhouhh supergroup 261 2013-01-25 11:19 /user/flume/1301/Hadoop46-20130125-111929858+0800.2334224217328560.00000021

另外,如果用重定向符»往檔案追加內容,則系統會新增新內容。而如果用vim編輯後關閉檔案,則flume也會重新發送整個檔案。 這是因為vim編輯檔案是在臨時檔案中編輯的,編輯完,將原始檔刪除,用臨時檔案替換原檔案內容。這導致inode變化。所以agent只好重新發送整個檔案。這些都可能導致日誌操作時的問題。

flume 的tail 類似於unix系統tail -F, -F引數是在檔案被用其他檔案替換後重新讀取的。但因為inode改變,無法確認追加,只能重新全部讀取。

 [[email protected] ~]$ tail --follow=name cards
 haha,1,2
 2013.1.23.18:52:59 haha,3,4
 asdf
 hello,
 what heppen?
 haha
 tail: `cards' has been replaced; following end of new file //此處在另一個console中用vim編輯了該檔案。
 haha,1,2
 2013.1.23.18:52:59 haha,3,4
 asdf
 hello,
 what heppen?
 haha
 i love it!

這種方式方便日誌檔案的滾動命名,但需要注意可能引入的問題。

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源