kafka 数据目录结构

核心目录结构

在 KRaft 模式下,所有数据(包括元数据、消息日志、消费者偏移量)统一存储在 kraft-combined-logs/ 目录中。

元数据目录

路径:kraft-combined-logs/__cluster_metadata-0/
作用:存储集群元数据(如 Topic 创建、分区分配、Broker 注册等)。
关键文件:
    .log 文件:元数据变更日志,记录所有操作。(当前活跃日志段,存储最新的偏移量提交记录)
    .index: 映射元数据日志的偏移量到物理位置,加速元数据查询。 (索引当前活跃段的数据)
    .timeindex:按时间戳检索元数据变更记录,支持快速定位特定时间的操作
    .snapshots:元数据快照,用于快速恢复集群状态。
    .checkpoint:包含快照的元数据版本和校验信息,确保快照完整性。
    leader-epoch-checkpoint:记录 Leader Epoch 信息,防止副本数据不一致。
    quorum-state: 存储 Raft 仲裁节点的状态信息(如当前投票的节点 ID 和任期)。
    partition.metadata: 分区元数据文件,记录分区的副本分配和 ISR(In-Sync Replicas)列表.
   

Topic 数据目录

路径示例:kraft-combined-logs/<topic_name>-<partition_id>/
作用:存储分区的消息数据、索引及副本信息。
关键文件:
    .log 文件:存储实际消息数据,消息数据分段存储。默认 1GB。不满1G大小为活跃段。
    .index/.timeindex:偏移量和时间戳索引,加速消息定位。
    .snapshot   # KRaft 快照(关联元数据)
    partition.metadata:分区的副本列表和 ISR(In-Sync Replicas)。
    leader-epoch-checkpoint:记录 Leader Epoch 状态,用于副本同步。

内部 Topic 目录

路径示例:kraft-combined-logs/__consumer_offsets-<分区号>/
作用:存储消费者组的偏移量提交记录。
关键文件:
    .log 文件:启用日志压缩(cleanup.policy=compact),仅保留最新偏移量(如 00000000000000025418.log)。
    .snapshot:KRaft 模式下的元数据快照,轻量级状态记录。

根目录关键文件

meta.properties:定义集群 ID 和节点 ID(如 cluster.id=ABC123, node.id=1)。
cleaner-offset-checkpoint:管理日志压缩(Log Compaction)的进度,记录每个分区最后一次成功清理操作的偏移量,避免重复清理。
log-start-offset-checkpoint:记录每个分区的日志起始偏移量(Log Start Offset),用于数据保留策略(如删除过期消息)或截断操作。
recovery-point-offset-checkpoint:崩溃恢复时的检查点偏移量。
bootstrap.checkpoint: 记录集群启动时的初始元数据检查点,用于在首次启动或元数据恢复时快速定位元数据日志的起始位置。
replication-offset-checkset-checkpoint: 跟踪副本同步进度,记录每个分区的 Follower 副本已成功复制的最高偏移量。

存储计算

单分区存储=消息总量×平均消息大小×(1+索引系数)×副本因子
示例:
    每日消息量:100 万条
    平均消息大小:1 KB
    保留时间:7 天
    副本因子:3
    索引系数:10%
    
    单分区存储=1,000,000×1KB×7×1.1×3=23.1GB

优化

调整日志段大小

# 默认 1 GB,增大可减少分段数量,但恢复时间变长。
log.segment.bytes=2147483648

优化保留策略

按时间保留:retention.ms=604800000(7 天)。
按大小保留:retention.bytes=107374182400(单分区 100GB)。

监控与清理

定期清理旧快照:调整 metadata.max.snapshots.retained=2。
监控消费者组活跃度:删除无效偏移量记录(使用 kafka-delete-records.sh)。

启用日志压缩

对键重复的 Topic 启用压缩策略,减少冗余数据:
kafka-configs.sh --alter --topic <topic_name>  --add-config cleanup.policy=compact

 

posted @ 2025-03-07 14:38  小吉猫  阅读(180)  评论(0)    收藏  举报