Kafka日志目錄布局


文件結構

Kafka中的消息是以主題為基本單位進行歸類的,各個主題以邏輯上是獨立的。每個主題又可以分為一個或多個分區,分區的數量是在主題創建時指定的。

一個分區對應一個日志(Log),為了防止日志過大,引入了日志分段(LogSegment)概念,切分成多個較小文件。

Log在物理上只以文件夾的形式存儲,而每個LogSegment對應磁盤上的日志文件和兩個索引文件,以及可能的其他文件。

檢索文件

Parition是以文件的形式存儲在文件系統中,比如,在Kafka的數據目錄中(config/server.properties-log.dirs指定)中就有這樣3個目錄: 

1 hadoop@ubuntu:/usr/local/kafka_2.11$ ls /tmp/kafka-logs*
2 /tmp/kafka-logs:
3 cleaner-offset-checkpoint  meta.properties  recovery-point-offset-checkpoint  replication-offset-checkpoint 4 5 /tmp/kafka-logs-1: 6 cleaner-offset-checkpoint meta.properties recovery-point-offset-checkpoint replication-offset-checkpoint 7 8 /tmp/kafka-logs-2: 9 cleaner-offset-checkpoint meta.properties recovery-point-offset-checkpoint replication-offset-checkpoint

partition也是以文件的形式存儲在文件系統中,創建一個topic示例;

1 hadoop@ubuntu:/usr/local/kafka_2.11$ bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic topic-create --partitions 3 --replication-factor 2

查看log對應的文件:

1 hadoop@ubuntu:/tmp/kafka-logs$ la -al | grep topic-create
2 drwxrwxr-x  2 hadoop hadoop  4096 Nov 20 14:30 topic-create-1
3 drwxrwxr-x  2 hadoop hadoop  4096 Nov 20 14:30 topic-create-2
1 hadoop@ubuntu:/usr/local/kafka_2.11$ ls /tmp/kafka-logs/topic-create-1/
2 00000000000000000000.index  00000000000000000000.log  00000000000000000000.timeindex

為了消息的檢索,每個LogSegment中的日志文件(以".log"為文件后綴)都有對應的兩個索引文件:偏移量索引文件(以".index"為文件后綴)和時間戳索引文件(以".timeindex"為文件后綴)。

每個LogSegment都有一個基准偏移量baseOffset,用來表示當前LogSegment中第一條消息的offset,名稱固定為20位數字,沒有達到位數的用0填充,如上例;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM