flume agent tail source用vim編輯後全文重寫的問題
阿新 • • 發佈:2018-12-23
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協議,轉載請註明來源