setup kafka topic properties
log.retention.ms, log.retention.minutes, log.retention.hours
기본값: log.retention.hours: 168시간 (즉, 7일)
log.retention.ms 및 log.retention.minutes는 기본적으로 설정되지 않으며, 설정하지 않으면 log.retention.hours 값이 사용됩니다.
상세 설명: 목적: 이 속성들은 Kafka 토픽의 메시지가 얼마나 오랫동안 유지될지를 시간 단위로 설정합니다. 로그의 유지 시간은 메시지가 Kafka 토픽에 기록된 시점부터 해당 메시지가 삭제되기까지의 시간을 의미합니다.
동작:
log.retention.ms: 메시지를 밀리초 단위로 보관하는 기간을 설정합니다.
log.retention.minutes: 메시지를 분 단위로 보관하는 기간을 설정합니다.
log.retention.hours: 메시지를 시간 단위로 보관하는 기간을 설정합니다. 기본값은 7일(168시간)입니다.
이 속성들은 메시지가 토픽에 저장된 후 얼마나 오랫동안 유지될지를 결정합니다. 설정된 시간이 지나면, Kafka는 자동으로 오래된 메시지 로그를 삭제하여 디스크 공간을 확보합니다.
사용 예시:
로그를 오랫동안 유지해야 하는 경우, 예를 들어 데이터 분석 목적이나 감사 로그를 위한 경우에는 log.retention.hours를 크게 설정할 수 있습니다. 반대로, 공간 절약이나 단기 메시지 처리만 필요할 경우에는 이 값을 더 짧게 설정하여 불필요한 로그 저장을 최소화할 수 있습니다.
log.retention.bytes
기본값: -1 (즉, 기본적으로 크기 제한 없음)
상세 설명: 목적: 이 속성은 Kafka가 토픽의 로그 파일을 저장하는데 사용할 수 있는 디스크 용량의 한계를 바이트 단위로 설정합니다. 즉, 특정 토픽의 로그 파일이 지정된 크기에 도달하면, Kafka는 가장 오래된 로그부터 삭제하여 새 로그를 저장할 공간을 만듭니다.
동작:
토픽의 로그 파일 크기가 log.retention.bytes에 설정된 한도를 초과할 경우, Kafka는 자동으로 가장 오래된 로그를 삭제합니다.
이 설정은 로그가 일정 크기를 넘지 않도록 제한하는 용도로 사용되며, 디스크 공간 관리에 중요한 역할을 합니다.
사용 예시:
디스크 공간이 제한된 환경에서는 log.retention.bytes를 설정하여 저장되는 메시지 로그의 크기를 제한할 수 있습니다. 예를 들어, 1GB로 설정하면, 해당 토픽의 로그는 1GB를 초과하지 않으며 초과된 부분은 자동으로 삭제됩니다.
속성 간의 관계
시간 기반 삭제 (log.retention.ms, log.retention.minutes, log.retention.hours):
이 속성들은 메시지를 시간을 기준으로 삭제하는 규칙을 설정합니다. 기본적으로 7일이 지나면, Kafka는 오래된 메시지 로그를 삭제합니다. 시간 단위가 세 가지(ms, minutes, hours)로 제공되지만, 가장 세밀하게 설정된 단위가 우선 적용됩니다. 예를 들어, log.retention.ms가 설정되면 log.retention.hours보다 먼저 적용됩니다.
크기 기반 삭제 (log.retention.bytes):
이 속성은 디스크 용량을 기준으로 로그를 삭제하는 규칙을 설정합니다. 만약 로그의 총 크기가 설정된 바이트 수를 초과하면, Kafka는 가장 오래된 로그를 삭제합니다.
시간 기반 vs 크기 기반:
시간과 크기 제한은 동시에 적용됩니다. 예를 들어, 설정된 시간(예: 7일)이 지나면 로그가 삭제되고, 그 전에 로그 파일 크기가 설정된 한도(예: 1GB)를 넘으면 크기 기준으로도 삭제됩니다. 즉, 시간과 크기 중 먼저 도달하는 조건에 의해 메시지가 삭제됩니다. 설정된 시간이 지나거나 설정된 크기를 초과하면, Kafka는 해당 기준에 맞추어 오래된 로그를 삭제합니다.
요약
log.retention.ms, log.retention.minutes, log.retention.hours: 메시지가 유지될 시간을 밀리초, 분, 또는 시간 단위로 설정합니다. 기본값은 7일(168시간)입니다.
log.retention.bytes: 저장될 메시지 로그의 최대 크기를 바이트 단위로 설정합니다. 기본값은 크기 제한이 없습니다.
이 속성들은 시간 기반 또는 크기 기반 조건 중 하나가 만족되면 메시지 로그를 삭제하는 데 사용됩니다.
댓글남기기