Kafka_kafka的log存储以及查询机制

1246-谭同学

发表文章数:140

热门标签

首页 » 大数据 » 正文


1.kafka中log日志目录及组成

目录: kafka在我们指定的log.dir目录下,会创建一些文件夹;名字是【主题名字-分区名】所组成的文件夹。
文件: 在【主题名字-分区名】的目录下,会有两个文件存在,名字分别为.index,和.log

#索引文件
00000000000000000000.index
#日志内容
00000000000000000000.log

变化: 在目录下的文件,会根据log日志的大小进行切分,.log文件的大小为1G的时候,就会进行切分文件;
Kafka_kafka的log存储以及查询机制

kafka日志的组成:
segment File组成:由两个部分组成,分别为index Fille和data File,此两个文件一一对应且成对出现; 后缀.index和.log分别表示为segment的索引文件、数据文件。
Kafka_kafka的log存储以及查询机制

segment文件命名规则: partion全局的第一个segment从0开始,后续每个segment文件名为上一个全局 partion的最大offset(偏移message数)。数值最大为64位long大小,19位数字字符长度,没有数字就用0 填充。
Kafka_kafka的log存储以及查询机制

2.kafka的offset查找过程

Kafka_kafka的log存储以及查询机制

比如:要查找绝对offset为7的Message:

上图的左半部分是索引文件,里面存储的是一对一对的key-value,其中key是消息在数据文件(对应的log文件)中的编号,比如“1,3,6,8……”分别表示在log文件中的第1条消息、第3条消息、第6条消息、第8条消息……

index文件中并没有为数据文件中的每条消息都建立索引,而是采用了稀疏存储的方式,每隔一定字节的数据建立一条索引。
优点: 这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中。
缺点: 没有建立索引的Message也不能一次定位到其在数据文件的位置,从而需要做一次顺序扫描,但是这次顺序扫描的范围就很小了

查找文件和扫描方式都是采用二分查找

以索引文件中元数据3,4597为例,其中3代表在右边log数据文件中从上到下第3个消息(在全局partiton表示第4597个消息),
其中4597表示该消息的物理偏移地址(位置)为4597。

标签:

未经允许不得转载:作者:1246-谭同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Kafka_kafka的log存储以及查询机制》 发布于2021-02-22

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录