1. 問題-Flume任務(wù)故障怀骤,文件重命名數(shù)據(jù)丟失
我們常用TailSource來監(jiān)聽日志文件期丰,被監(jiān)聽的日志文件是常配置了按時(shí)間滾動(dòng)生成方式的柔逼,也就是一天一個(gè)文件犯犁,到零點(diǎn)時(shí)會(huì)將gather.log更名為gather-20230415.log。
由于 tailSource 是根據(jù) iNode + 文件名稱組成唯一鍵進(jìn)行監(jiān)聽,并記錄偏移量的籽慢;
假設(shè)浸遗,設(shè)置Flume任務(wù)只監(jiān)聽 gather.log(也可以監(jiān)聽整個(gè)日志文件夾,但有問題嗡综,看完下面就明白) ,
Flume采集任務(wù)在 2023-04-15的22點(diǎn)出現(xiàn)故障杜漠,任務(wù)掛掉了极景,運(yùn)維人員在第二天上午10點(diǎn)才發(fā)現(xiàn)并重啟服務(wù);
重啟服務(wù)后驾茴,任務(wù)從偏移量記錄表中找到iNode + gather.log 對(duì)應(yīng)的偏移量盼樟,但是日志文件中新生成了 gather.log,原來的已經(jīng)更名為gather-20230415.log锈至,
任務(wù)就重新生成一組唯一鍵晨缴,進(jìn)行記錄偏移量,從頭開始采集新的 gather.log 峡捡。
這樣新數(shù)據(jù)是可以正常采集的击碗,但是 gather-20230415.log 里的在 22點(diǎn)到 00點(diǎn) 產(chǎn)生的數(shù)據(jù)我們就沒有采集到,這樣就產(chǎn)生數(shù)據(jù)丟失们拙。
如果設(shè)置監(jiān)聽文件夾下全部文件稍途,上面情況是不是就導(dǎo)致數(shù)據(jù)重復(fù)。
修復(fù)后就直接設(shè)置為采集文件夾下的內(nèi)容(使用正則)
2. 修復(fù)
修改 唯一鍵 只使用iNode砚婆,剔除文件名稱械拍。
項(xiàng)目結(jié)構(gòu):
org.apache.flume.source.taildir.TailFile
org.apache.flume.source.taildir.ReliableTaildirEventReader
打包
替換 ${FLUME_HOME}/lib/flume-taildir-source-1.9.0.jar