ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kafka] Kafka Log File
    Kafka 2022. 10. 15. 13:35

    * 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

    댓글

Designed by Tistory.