kafka日誌清理目前主要有兩種策略:
日誌刪除
日誌壓縮:日誌壓縮就是根據key來保留最後一條訊息。
kafka提供log.cleanup.policy引數進行相應配置,預設值:delete,還可以選擇compact。
日誌刪除
配置預設值
說明log.retention.check.interval.ms
300000 (5分鐘)
檢測頻率
log.retention.hours
168 (7天)
日誌保留時間小時
log.retention.minutes
日誌保留時間分鐘
log.retention.ms
日誌保留時間毫秒
file.delete.delay.ms
60000 (1分鐘)
延遲執行刪除時間
log.retention.bytes
-1 無窮大
執行保留日誌檔案最大值
log.retention.bytes
1073741824 (1g)
日誌檔案最大值
kafka會根據檢測頻率週期性的檢測日誌是否需要刪除,日誌刪除策略主要有以下集中:
基於時間刪除
kafka會查詢日誌段的時間戳索引檔案中的最後一條記錄,如果最後一條timestamp小於0,則取最近修改時間。
當確認完需要刪除的日誌段以後,需要進行以下刪除操作:
從日誌物件中所維護日誌分段的concurrentskiplistmap中移除待刪除的日誌分段,保證沒有執行緒對這些日誌分段進行讀取操作。
為日誌段中的所有檔案加上.delete字尾
kafka中會有乙個命名為"delete-file"的延遲任務來刪除這些無效的日誌資料
假如當前日誌段中也有需要刪除的資料,那麼kafka會先進行分段,建立乙個新的活躍日誌段,然後執行刪除操作。
基於大小刪除
計算需要刪除的日誌大小的總和(當前日誌大小-所允許的日誌檔案最大值)
然後從第乙個日誌分段開始查詢,查詢可以進行刪除的日誌段集合
最後執行刪除操作
基於日誌檔案起始偏移量
日誌檔案起始偏移量預設等於第乙個日誌段的基準偏移量,但隨著資料的刪除操作,該值也在不斷變化。
基於日誌檔案起始偏移量的判斷規則是,如果乙個日誌段的下乙個日誌段的起始偏移量如果小於日誌檔案起始偏移量,那麼該日誌段就可以被加入到刪除佇列,最後執行刪除。
Kafka 操作日誌清理指令碼
配置完成後,需要新增crontab usr bin env bash author yakir.king date 2020 8 3 20 14 清除多餘日誌 清除規則 1 保留個數,kafka預設按照小時儲存日誌,每小時儲存乙個,約定保留檔案個數,預設72個 2 保留時間,預設儲存72小時 3 儲...
Kafka日誌及Topic資料清理
在介紹手動刪除操作之前,先簡單的介紹一下kafka消費offset原理。一 kafka消費offset 在通過client端消費kafka中的訊息時,消費的訊息會同時在zookeeper和kafka log中儲存,如上圖紅線所示。當手動刪除kafka某一分片上的訊息日誌時,如上圖藍線所示,此是只是將...
Kafka日誌及Topic資料清理
在介紹手動刪除操作之前,先簡單的介紹一下kafka消費offset原理。一 kafka消費offset 在通過client端消費kafka中的訊息時,消費的訊息會同時在zookeeper和kafka log中儲存,如上圖紅線所示。當手動刪除kafka某一分片上的訊息日誌時,如上圖藍線所示,此是只是將...