카프카 로그 설정 방법에 대해 알아보도록 하겠습니다. 모든 토픽의 메세지는 세그먼트라는 파일에 저장됩니다. 세그먼트는 최대 1GB로 기본 설정되어 있습니다. 그리고 1GB를 넘으면 새로 로그 파일 생성됩니다. 따라서 관리자는 로그 세그먼트 관리 플랜을 수립하고 있어야 합니다.
카프카에 대한 전반적인 내용이 궁금하신 분들은 아파치 카프카 구성요소 및 핵심기능 6가지를 참고부탁드립니다.
목차
Toggle1. 카프카 로그 세그먼트 삭제
- 로그 세그먼트 즉시 처리 설정 방법
- server.properties : log.cleanup.policy = true(디폴트로 설정되어 있을 확률이 큼)
- retention.ms = 0(로그 세그먼트 보관시간이 해당 숫자보다 크면 세그먼트를 삭제한다는 명령)로 설정하면 0보다 무조건 크므로 즉시 삭제 처리함.
# 토픽 생성
kafka-topics.sh --bootstrap-server pf-kafka01.sample.test:9092 --create --topic pf-test03 --partition 1 --replication-factor 3
# log1 전송
kafka-console-producer.sh --bootstrap-server pf-kafka01.sample.test:9092 --topic pf-test03
> log1
# 컨슈머 종료 후 아래 설정 변경
kafka-configs.sh --bootstrap-server pf-kafka01.sample.test:9092 --topic pf-test03 \\\\
--add-config retention.ms=0 --alter
# 옵션 삭제
kafka-configs.sh --bootstrap-server pf-kafka01.sample.test:9092 --topic pf-test03 \\\\
--delete-config retention.ms=0 --alter
2. 카프카 로그 세그먼트 컴팩션
- 로그를 삭제하지 않고 컴팩션에서 보관합니다.
- consumer_offset 토픽은 카프카의 내부 토픽으로 컨슈머 그룹의 정보를 저장하는 토픽입니다.
- 메시지의 키값을 기준으로 과거 정보는 무시하고 가장 최신값을 저장합니다.
Kafka Log Compaction | Confluent Documentation
로그 세그먼트 컴팩션 옵션
- cleanup.polocy
- 옵션값 : compact
- 토픽의 옵션으로 적용됩니다.
- 토픽 레벨에서 로그 컴팩션을 설정할 때 적용하는 옵션입니다.
- log.cleanup.polocy
- 옵션값 : compact
- 브로커의 설정 파일에 적용합니다.
- 브로커 레벨에서 로그 컴팩션을 설정할 때 적용하는 옵션입니다.
- log.cleaner.min.compaction.lag.ms
- 옵션값 : 0
- 브로커의 설정 파일에 적용합니다.
- 메시지가 기록된 후 컴팩션하기 전 경과되어야 할 최소 시간을 지정합니다.
- 만약 이 옵션을 설정하지 않으면 마지막 세그먼트를 제외하고 모든 세그먼트를 컴팩션할 수 있습니다.
- log.cleaner.max.compaction.lag.ms
- 옵션값 : 9223372036854775807
- 브로커의 설정 파일에 적용합니다.
- 메시지가 기록된 후 컴팩션하기 전 경과되어야 할 최대 시간을 지정합니다.
- log.cleaner.min.cleanable.ratio
- 옵션값 : 0.5
- 브로커의 설정 파일에 적용합니다.
- 로그에서 압축이 되지 않은 부분을 더티라고 표현합니다. 전체 로그 대비 더티의 비율이 50%가 넘으면 로그 컴팩션이 실행됩니다.
카프카 로그 컴팩션에 대한 공식 문서는 여기 링크를 참고부탁드립니다.
좀더 자세한 설명을 원하시는 분은 실전 카프카 개발부터 운영까지 도서를 참고바립니다.
참고 : 실전 카프카 개발부터 운영까지
아래는 카프카 관련 국내 도서입니다.
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”