* Topic, Partition, Segment 구조(Multi Partition을 통한 병렬 처리 구조일 경우)
- Partition은 Broker들에게 분산되며, 각 Partition은 Segment File들로 구성된다.
- Rolling Strategy: log.segment.bytes(default 1GB), log.roll.hours(default 168 hours)
Log Segment File
- Data File이라고 부른다.
- 첫 번째로 저장되는 데이터의 Offset이 파일명이 된다.
- Segment File이 생성되는 위치는 각 Broker의 server.properties 파일 안의 log.dirs 파라미터로 정의한다. -> 콤마를 사용하여 여러 디렉터리 지정 가능
- log.dirs=/data/kafka/kafka-log-a, /data/kafka/kafka-log-b
- 각 Topic과 Partition은 log.dirs 아래 하위 디렉터리로 구성된다.
- Topic 이이 test 1일 때, /data/kafka/kafka-log-a/test 1 디렉터리로 생성된다.
- 해당 디렉터리에 생성되는 파일
- 0000000012345.index
- 0000000012345.timeindex
- 0000000012345.log
- 0000000092801.index
- 0000000092801.timeindex
- 0000000092801.log
- leader-epoch-checkpoint
* 0000000012345 파일들에는 0000000012345 offset부터0000000092800 offset까지의 데이터를 저장/관리
- 기본으로 Partition 디렉터리에 생성되는 File Type
- .log(Log Segment File) -> 데이터와 metadata 저장
- .index(Index File) -> 각 데이터의 Offset을 Log Segment File의 Byte 위치에 매핑
- .timeindex(Time-based Index File) -> 각 데이터의 timestamp를 기반으로 데이터를 검색하는 데 사용
- leader-epoch-checkpoint File -> Leader Epoch 관련 Offset 정보를 저장
- 특정한 Producer 파라미터를 사용하면 Partition 디렉터리에 생기는 File Type
- .snapshot -> Idempotent 옵션을 활성화한 Producer 사용 시 생성된다.
- .txnindex -> Transactional Producer 사용 시 생성된다.
- Log Segment File 파라미터
log.segment.bytes (default: 1GB) | 설정 값을 넘어가면 자동으로 새로운 Segment 생성 |
log.roll.ms (default: 168 시간) | 설정 시간을 넘어가면 자동으로 새로운 Segment 생성 |
log.index.size.max.bytes (default: 10 MB) | 설정 Index 최대 크기를 넘어갈 때 |
Checkpoint File
- 각 Broker에는 2 개의 Checkpoint File이 존재한다.
- log.dirs 디렉터리에 위치한다.
- File 종류
- replication-offset-checkpoint -> 마지막으로 Commit 된 데이터의 ID인 High Water Mark를 저장한다. 해당 정보를 사용하여 Follower 가 Commit 되지 않은 메시지를 Truncate 한다.
- recovery-point-offset-checkpoint -> 데이터가 디스크로 Flush 된 지점을 저장한다. 복구 중 Broker는 해당 시점 이후의 데이터가 손실되었는지 판단한다.
'Kafka' 카테고리의 다른 글
[Spring + Kafka] 간단 실습 (0) | 2022.11.26 |
---|---|
[Kafka] Exactly Once Semantics(EOS) (0) | 2022.10.17 |
[Kafka] Partition Assignment Strategy (0) | 2022.10.14 |
[Kafka] Replication (2) (1) | 2022.10.13 |
[Kafka] Replication (1) (0) | 2022.10.12 |