Kafka學習筆記之Kafka日誌刪出策略

2022-05-09 22:24:31 字數 1426 閱讀 5924

kafka將topic分成不同的partitions,每個partition的日誌分成不同的segments,最後以segment為單位將陳舊的日誌從檔案系統刪除。

假設kafka的在server.properity檔案中設定的日誌目錄為tmp/kafka-logs,對於名為test_perf的topic。假設兩個partitions,那麼我們可以在tmp/kafka-logs目錄下看到目錄vst_topic-0,vst_topic-1。也就是說kafka使用目錄表示topic 分割槽。vst_topic-0目錄下下,可以看到字尾名為.log和.index的檔案,如下

[root@kafka kafka-logs]#

ls test_perf-0/

00000000000003417135.index.deleted 00000000000003518540.index 00000000000003619945.index

00000000000003417135.log.deleted 00000000000003518540.log 00000000000003619945.log

如果所有待刪除的陳舊日誌都清理了,那麼是看不到字尾名為.deleted的檔案的。

server.properity檔案中設定如下:

log.retention.hours=168 //7d

log.retention.check.interval.ms=300000 //5min

log.segment.bytes=1073741824 //1g

log.cleaner.delete.retention.ms=86400000 //1d

log.cleaner.backoff.ms=15000 //15s

每個segment的大小為1gb,每5分鐘檢查一次是否有segment已經查過了7d,如果有將其標記為deleted。標記為deleted的segment缺省會保留1天,清理執行緒會每隔15秒檢查一次,是否有標記為deleted的segment的保留時間超過一天了,如果有將其從檔案系統刪除。

大家注意,kafka清理時是不管該segment中的訊息是否被消費過,它清理的依據為是否超過了指定的保留時間,僅此而已。

server.properity檔案中設定:

log.retention.bytes(原來寫的是log.segment.bytes)引數預設沒有指定。

你可以同時指定log.retention.bytes和log.retention.hours來混合指定保留規則。一旦日誌的大小超過了log.retention.bytes就清除老的segment,一旦某個segment的保留時間超過了規定的值同樣將其清除。

log.cleanup.policy屬性指定清理策略,預設策略為delete,可選的為compact

Kafka學習筆記 Kafka環境搭建

1.將kafka的tar包上傳到測試環境,解壓到 opt software,配置環境變數 kafka home opt software kafka 2.11 1.1.0 path kafka home bin scala home bin path export kafka home export...

kafka學習總結之kafka核心

1 kafka核心元件 1 replication 副本 partition 分割槽 乙個topic可以有多個副本,副本的數量決定了有多少個broker存放寫入的資料 副本是以partition為單位的,存放副本即是備份若干個partition,但是只有乙個partition被選為leader用於讀...

學習筆記 Kafka

kafka kafka把資料往磁碟上寫,但是在磁碟上存它的讀寫速度比記憶體快,這個依賴於預讀和後寫功能,但是這個預讀和後寫必須是按照順序的方式,若沒有順序的方式優化的話,不存在什麼預讀和後寫。特點 訊息持久化 能落到磁碟 通過o 1 的磁碟資料結構提供資料的持久化 高吞吐量 分布式 擴充套件能力強 ...