kafka文件存储机制
Topic 数据的存储机制
Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,
将每个partition分为多个segment。每个segment包括:“.index”文件、“.log”文件和.timeindex等文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号。
1. 一个topic通过设置可分为多个partition,下图的名称为words的topic,分区数为3,分别为words-0、words-1、words-2。
2. 一个partition分为多个segment,在配置文件中可通过log.segment.bytes参数设置每个segment的大小,当一个segment大小达到log.segment.bytes所设值就会再产生一个segment,一个segment包含以下几个文件:
3.通过工具查看 index 和 log 信息
kafka-run-class.sh kafka.tools.DumpLogSegments --files ./00000000000000000000.index kafka-run-class.sh kafka.tools.DumpLogSegments --files ./00000000000000000000.log