지구정복

[Kafka] Kafka Topic, Producer, Consumer 생성하기 본문

데이터 엔지니어링 정복/Kafka

[Kafka] Kafka Topic, Producer, Consumer 생성하기

eeaarrtthh 2021. 5. 7. 11:33
728x90
반응형

공식문서 : kafka.apache.org/documentation/#design_pull

 

1. Topic, Producer, Consumer 생성하고 메시지 보내기

더보기

명령어는 다음과 같다.

 

-토픽의 생성

kafka-topics --create --zookeeper 서버명:2181 --replication-factor 복제할개수 --partitions 파티션할개수  --topic 토픽이름

kafka-topics --create --zookeeper server02.hadoop.com:2181 --replication-factor 1 --partitions 1 --topic Example

 --replication-factor 1 : 복제본을 생성할 수 있다. 복제본이란 Zookeeper가 메인(leader)이 되는 Partition을 정하고, Partition을 각 broker마다 복제를 하는 것을 의미한다. 이때 메인(leader) Partition을 복제하여 만들어진 Partition을 follower라고 한다.

--partitions 1 : 해당 Topic에 데이터들이 partitions의 개수만큼 분리 저장하게 된다. 

 

 

* 참고사항1

Partition은 하나의 Consumer에만 접근가능하고 Consumer는 여러 개의 Partition을 소비할 수 있다.

따라서 Partition의 개수 >= Consumer인스턴스의 개수를 유지해야 한다.

또한 Partition을 늘리면 다시 줄일 수 없기 때문에 처리량을 고려해서 Partition과 Consumer의 개수를 선택해야 한다.

 

* 참고사항2

zookeeper가 쓰이는 이유는 아래 그림 처럼 kafka가 구성되어있기 때문이다.

 여기서 kafka Broker는 kafka 서버이고, Zookeeper는 Kafka Cluster를 구성할 수 있도록 분산 코디네이션 시스템 역할을 한다. 또한 Kafka Broker와 Zookeeper는 다른 서버에 설치하여 운영하는 것을 추천하는데, 이유는 만약 Zookeeper에서 시스템 오류가 발생한 경우 Kafka Broker에 영향을 주지 않기 위해서이다.
또한 zookeeper는 기본적으로 2181 포트를 이용한다.

 

-토픽의 삭제

kafka-topics --delete --zookeeper server02.hadoop.com:2181 --topic Example

 

 

-Kafka Producer 사용(메시지 생산자)

kafka-console-producer --broker-list server02.hadoop.com:9092 -topic Example

--broker-list server02.hadoop.com:9092 : Kafka에 있는 Broker 서버명 지정

 

-Kafka Consumer 사용(메시지 수신자)

kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic Example --partition 0 --from-beginning

--bootstrap-server server02.hadoop.com:9092 : kafka cluster를 구성하는 전체 broker에 대해 설정해주지 않아도 클라이언트는 각자의 broker 자원 위치를 알고 작업을 수행하도록 한다.
(bootsrap이란 한 번 시작되면 알아서 진행되는 일련의 과정을 의미)

--partition 0 : Consumer에서는 partition이 필요없음
--from-beginning : Topic에서 지금까지 받지 못했던 데이터가 있으면 다 받는다는 명령어

 

 

실습

위 과정대로 Topic, Producer, Consumer를 생성하고 Producer에서 아래처럼 메시지를 입력한다.

Consumer를 여러 개 만드려면 Putty에서 New Session으로 Kafka가 설치된 서버를 열고 Consumer생성 명령어를 똑같이 입력하면 된다.

 

아래와 같이 Producer가 메시지를 생성하면 Topic에 보내지고 Consumer들은 해당 Topic에서 메시지를 소비하는 것을 확인할 수 있다.

 

 

 

 

728x90
반응형
Comments