【发布时间】:2020-12-25 20:08:01
【问题描述】:
我正在尝试了解 kafka 数据日志。我可以看到logs.dir中设置的目录下的日志为“Topicname_partitionnumber”。但是我想知道在它下面捕获的不同日志是什么。以下是示例日志的屏幕截图。
【问题讨论】:
标签: apache-kafka
我正在尝试了解 kafka 数据日志。我可以看到logs.dir中设置的目录下的日志为“Topicname_partitionnumber”。但是我想知道在它下面捕获的不同日志是什么。以下是示例日志的屏幕截图。
【问题讨论】:
标签: apache-kafka
在 Kafka 日志中,每个分区都有一个 log.dir 目录。每个分区被分割成段。
段只是消息的集合。 Kafka 不是将所有消息都写入一个文件,而是将它们拆分为多个段。
每当 Kafka 写入分区时,它都会写入活动段。每个段都有定义的大小限制。当达到段大小限制时,它会关闭段并打开一个变为活动的新段。根据配置,一个分区可以有一个或多个段。
每个段包含三个文件 - segment.log、segment.index 和segment.timeindex
每个Kafka主题分区有三种文件类型:
-rw-r--r-- 1 kafka hadoop 10485760 Dec 3 23:57 00000000000000000000.index
-rw-r--r-- 1 kafka hadoop 148814230 Oct 11 06:50 00000000000000000000.log
-rw-r--r-- 1 kafka hadoop 10485756 Dec 3 23:57 00000000000000000000.timeindex
日志和索引文件前面的00000000000000000000 是段的名称。它表示写入该段的第一条记录的偏移量。如果有 2 个段,即段 1 包含消息偏移量 0,1,段 2 包含消息偏移量 2 和 3。
-rw-r--r-- 1 kafka hadoop 10485760 Dec 3 23:57 00000000000000000000.index
-rw-r--r-- 1 kafka hadoop 148814230 Oct 11 06:50 00000000000000000000.log
-rw-r--r-- 1 kafka hadoop 10485756 Dec 3 23:57 00000000000000000000.timeindex
-rw-r--r-- 1 kafka hadoop 10485760 Dec 3 23:57 00000000000000000002.index
-rw-r--r-- 1 kafka hadoop 148814230 Oct 11 06:50 00000000000000000002.log
-rw-r--r-- 1 kafka hadoop 10485756 Dec 3 23:57 00000000000000000002.timeindex
.log 文件存储偏移量、消息的物理位置、时间戳以及消息内容。在特定偏移量从 Kafka 读取消息时,在巨大的日志文件中查找偏移量成为一项昂贵的任务。
这就是.index 文件变得有用的地方。它将消息的偏移量和物理位置存储在日志文件中。
.timeindex 文件基于消息的时间戳。
【讨论】:
没有后缀的文件是段文件,即数据实际写入的文件,以最早包含的消息偏移量命名。其中最新的是活动段,即当前附加消息的段。
.index 是从偏移量到段文件中位置的对应映射。 .timeindex 是从时间戳到偏移量的映射。
【讨论】:
以下是示例日志的屏幕截图
您应该添加您的screenshot 和sample log,然后我们可以给出您期望的具体答案。
在此之前,只能给大家一些常识:
例如:在我的 CentOS 中,对于文件夹:
/root/logs/kafka/kafka.log/storybook_add-0
storybook_add: 是 主题 名称
storybook-add
它包含:
[root@xxx storybook_add-0]# ll
total 8
-rw-r--r-- 1 root root 10485760 Aug 28 16:44 00000000000000000023.index
-rw-r--r-- 1 root root 700 Aug 28 16:45 00000000000000000023.log
-rw-r--r-- 1 root root 10485756 Aug 28 16:44 00000000000000000023.timeindex
-rw-r--r-- 1 root root 9 Aug 28 16:44 leader-epoch-checkpoint
00000000000000000023.log: 日志文件
00000000000000000023.index: 索引文件00000000000000000023.timeindex:时间索引文件->
00000000000000000023 调用段名
23?
00000000000000000023.log中,存储第一条消息的位置是23
23 消息消息数据是什么样的?
我们可以看穿它的内容:
进一步了解kafka的基本概念和逻辑,推荐阅读这篇文章:
【讨论】: