Distribution
topic의 partition들은 Kafka 클러스터를 구성하는 서버들에 분산 저장이 된다.
partition들은 내고장성을 위해 여러 서버에 복제되며 복제되는 서버의 수를 설정
할 수 있다.
각 partition은 1대의 leader 서버와 0대 이상의 follower 서버들로 구성된다.
(즉, leader 서버 1대로도 Kafka 사용이 가능하다.)
leader는 읽기 쓰기가 모두 가능하고 follower들은 leader의 데이터를 복제한다.
만일 leader가 고장나면 follower 중 한 대를 leader로 선출한다.
이런 구조로 클러스터 내에서의 부하가 적절히 분산된다.
지난 포스팅 (Apache kafka 시작하기)에서의 기억을 더듬어보면
일단 클러스터 내의 복제 서버는 총 5대로 설정되어있다. zookeeper의
server.0 ~ server.4 설정과 Kafka server.properties에서의
zookeeper.connect 설정에 맥미니 5대의 host name이 설정된 것을
확인 할 수 있다.
그리고 이 상태에서 다음과 같이 토픽을 생성할 때 처음에 오류가 발생을 했었다.
SECONDARY-NAMENODE:bin mazdah$ ./kafka-topics.sh --create --zookeeper SECONDARY-NAMENODE.local:2181 --replication-factor 5 --partition 20 --topic test
원인은 SECONDARY-NAMENODE.local은 leader가 아니었고 그렇기 때문에
복제만 가능하고 write가 불가능했던 것이다.
결국 leader인 NAMENODE.local을 이용하여 topic 생성에 성공했다.
그리고 이렇게 생성된 topic은 5대의 서버의 로그 디렉토리
(server.propertiesd에 log.dirs로 설정된 위치 - 나의 경우 /tmp/kafka-logs)에
다음과 같이 뭔가 생성된 것을 확인할 수 있었다.
Producer
Producer는 선택한 topic으로 데이터를 발행한다.
Producer는 메시지를 발행할 topic을 선택하는 책임을 지는데
전통적인 round-robin 방식을 이용하여 균등하게 발행을 하거나
아니면 메시지의 어떤 키를 이용하여 특정 partition에는 특정 키를 가진
메시지만을 보낼 수 있다.
'Study > 빅데이터' 카테고리의 다른 글
[간보기 | Kafka] Kafka 무작정 실행하기 (0) | 2016.04.18 |
---|---|
[간보기 | Kafka] Apache Kafka 개요 - 3 (0) | 2016.04.03 |
[간보기 | Kafka] Apache Kafka 개요 - 1 (0) | 2016.03.26 |
[간보기 | kafka] Apache kafka 시작하기 (0) | 2016.03.20 |
[간보기 | Kafka] 3년만에 찾은 솔루션 kafka...ㅠ.ㅠ (0) | 2016.03.20 |