아래의 내용 및 이미지는 [데브원영] 아카피 카프카 for begineers 강의 요약 및 추가 공부한 내용입니다.
Kafka의 토픽(Topic)이란?
데이터를 최종적으로 저장하는 곳인데, 데이터를 구분하기 위한 저장소라고 보면 된다.
카프카는 데이터를 주고받을떄 지정된 토픽으로 주고받는다.
- 데이터가 들어갈 수 있는 용량
- 토픽은 데이터베이스 테이블이나, 파일시스템의 폴더와 유사한 성질
- 이 토픽에 프로듀서는 데이터를 넣고, 컨슈머가 데이터를 가져간다.
- 토픽은 목적에 따라 각각의 이름을 가질 수 있는데 무슨 데이터를 담는지에 따라 명확하게 명명 권장
토픽 내부,파티션
메세지의 분류단위로 하나의 토픽은 여러개의 파티션으로 구성
파티션은 저장소안에 분리된 공간으로 데이터를 더 빨리, 더 많이 보내고 처리하기 위해 만들어진 것이라 볼 수 있다.
파티션이 없다면 마치 1차선 도로를 달리는 것과 같고, 파티션을 늘릴수록 n차선 도로를 달리는것과 같다
첫번쨰 파티션번호는 0번부터 시작하고, 각 파티션마다 고유한 오프셋(offset)을 가지고 있다.
파티션에 어떻게 데이터를 넣는가?@!
하나의 파티션은 큐처럼 내부에 데이터가 파티션 끝에서부터 차곡차곡 쌓임 (by 프로듀셔)
큐처럼 데이터를 가장 오래된 순서대로 가져감 (by 컨슈머)
더이상 가져갈 데이터가 없으면 컨슈머는새로운 데이터가 들어올때까지 대기
그런데 이때 컨슈머가 데이터를 가져가더라도 데이터는 삭제되지 않는다.
파티션에 그대로 남은 데이터는 새로운 컨슈머가 붙었을떄 다시 0번부터 가져가면서 사용할 수 있다
다만 새로 들어온 컨슈머와 컨슈머 그룹이 다르고, auto.offset.reset=earliset일경우
왜 이렇게 사용하는가?@! 동일데이터를 목적에 따라 다르게 여러번 처리하려고!!
클릭로그를 분석하고 시각화 하기 위해 엘라스틱처리에 저장한다던가,
클릭로그를 백업하려고 하둡에 저장한다건가
동일데이터를 다른목적으로 사용하기 위해서
프로듀셔가 데이터를 보낼때 어떤 파티션에 넣어야하는가?@!
데이터를 넣을 '키'를 지정할 수 있다
- 키를 지정하지 않고 기본 파티셔너를 사용할 경우 라운드로빈으로 할당 (0번->1번->0번->1번...)
- 키가 있고, 기본파티셔너를 사용할 경우, 키의 해시(hash)값을 구하고 특정 파티션에 할당
파티션을 늘릴수 있지만 줄일수는 없다??!!!
파티션을 늘리면 컨슈며를 늘려서 데이터 처리를 분산시킬 수 있다.
데이터가 늘어나면 파티션의 데이터는 언제 삭제되는가?@!
레코드가 저장되는 최대시간과 크기를 지정한 값에 따라 다르다.
log.retentions.ms : 레코드 최대보존시간
log.retentions.byte : 레코드 최대 보존크기
'Book & Lesson' 카테고리의 다른 글
[책정리] 빅데이터를 지탱하는 기술 목차 (0) | 2021.06.16 |
---|---|
kafka강의6 | 카프카 버로우(Burrow) (0) | 2021.03.25 |
kafka강의5 | 컨슈머 랙(Consumer Lag)이란? (0) | 2021.03.25 |
kafka강의4 | 파티셔너(Partitioner)란? (0) | 2021.03.24 |
kafka강의3 | 브로커, 복제, ISR(in-sync-replication) (0) | 2021.03.24 |
kafka강의1 | 아파치 카프카(Apache Kafka)란? (0) | 2021.03.22 |