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填充,如上例;

posted @ 2020-11-20 15:12  lenomail  阅读(1388)  评论(0编辑  收藏  举报