目录:
- 日志
- 索引文件(segment file)
- 数据文件(message file)
一.日志
- kafak在我们指定的log.dirs目录下,会创建一些文件夹(segment(字段、段、片) file)
- 由主题名-分区名组成的文件夹。
- 分区文件夹由两部分组成:
- 0000000000000000000.index segment索引文件
- 0000000000000000000.log 数据文件
- message文件(数据文件),会根据log的大小,进行切分。
日志允许序列化的追加到最后一个文件中.当文件大小达到配置的大小(默认 1G)时,会生成一个新的文件.日志中有两个配置参数: M 是在 OS 强制写文件到磁盘之前的消息条数, S 是强制写盘的秒数.这提供了一个在系统崩溃时最多丢失 M 条或者 S 秒消息的保证.- 00000000000000778894.index
- 0000000000000077894.log
- segment文件命名规则:partion全局的第一个segment从0开始,后续每个segment文件名为上一个partion的最大offset(偏移message数)。数值最大为64位long大小,19位数字字符长度,没有数字的话用0填充。
- 在kafka的设计中,将offset值作为了文件名的一部分
- 由主题名-分区名组成的文件夹。
- 在kafka中因为数据是存储在本地硬盘,并没有像hdfs的那样的分布式存储,就会产生硬盘空间不足的情况
- 可以采用删除或者合并的方式进行处理
- 可以通过时间来删除、合并:默认7天(一般公司都是15天、30天)
- 可以通过字节大小、合并
- 如果是在server.properties里面设置,将在没有特殊指定参数的topic中,所有topic生效
- 相同的key,保存offset值最大的(最新的消息记录)
合并解析图: