카프카 설치하는 것에서부터 토픽 생성 및 이벤트 확인하는 것까지 정리해 보았다.
STEP 1: GET KAFKA
Download 에서 최신 버전의 Kafka를 다운로드 받는다.
1. wget을 이용하여 tgz 파일 다운로드 한다.
$ wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
2. 다운받은 링크를 압축 해제 한다.
$ tar -xzf kafka_2.13-3.6.0.tgz
$ cd kafka_2.13-3.6.0
STEP 2: START THE KAFKA ENVIRONMENT
⚠️ NOTE: Java 8 이상의 버전이 설치 되어 있어야 한다.
카프카 실행 (Kafka with ZooKeeper)
Apache Kafka는 ZooKeeper 또는 Kraft를 사용하여 시작할 수 있다. 둘 중 하나에 하나를 선택하여 실행할 수 있다. 여기에서는 ZooKeeper를 사용하여 시작하는 방법을 적었다. Kraft을 사용하는 방법은 여기에서 참조하길 바란다.
다음과 같이 차례대로 명령어를 실행하도록 한다.
1. ZooKeeper 기동 명령어 (Start the ZooKeeper service)
$ bin/zookeeper-server-start.sh config/zookeeper.properties
리눅스에서 위 명령어를 실행해보았다.
ZooKeeper 서버를 기동하기 전, ps -ef | grep 명령어를 사용하여 ZooKeeper 프로세스가 뜨지 않은 것을 확인해 볼 수 있다.
ZooKeeper 기동 명령어를 수행한 이후에는 ZooKeeper 관련 프로세스가 떠 있는 것을 확인할 수 있다.
2. 다른 터미널에서 Kafka 기동하기
다른 터미널 세션을 열고 위와 마찬가지로, Kafka 기동 전 ps -ef | grep 명령어를 사용하여 가 프로세스가 뜨지 않은 것을 확인해볼 수 있다.
다른 터미널 세션을 열어 명령어를 실행한다.
# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties
server.properties는 Kafka 브로커 설정 파일이며, 포트나 데이터 보관주기 설정되어 있다.
Kafka 기동 명령어를 수행한 이후에는 Kafka 관련 프로세스가 떠 있는 것을 확인할 수 있다.
ZooKeeper와 Kafka 모든 서비스가 성공적으로 시작되었다면, 기본적인 카프카 환경이 실행되고 사용할 준비가 되어있다.
STEP 3: Topic 생성하기
Kafka는 여러 시스템에서 이벤트(documentation에서의 레코드(records) 또는 메시지(messages) 라고도 함)를 읽고 쓰고 저장하고 처리할 수 있는 분산 이벤트 스트리밍 플랫폼(a distributed event streaming platform)이다.
매우 단순화된 Topic은 파일 시스템의 폴더와 유사하며, 이벤트는 해당 폴더의 파일이다. 따라서 첫 번째 이벤트를 작성하기 전에, 먼저 주제를 작성해야 한다.
다른 터미널 세션을 열고 다음과 같이 명령어를 실행하도록 한다.
1. Topic 생성
1) 이벤트에 저장될 Topic 생성하기
$ bin/kafka-topics.sh --create --topic topicName --bootstrap-server localhost:9092
옵션 설명
- --create : Topic 생성
- --topic : 사용할 Topic 이름
- --bootstrap-server : 연결할 카프카 서버 포트번호 설정( host:port )
- --partitions: 기본 생성될 파티션의 수 (server.properties 설정 파일에서 num.partitions 설정 가능)
- --replication-factor: 레플리케이션 복제 수
2. Topic 확인
1) Topic 상세 조회
$ bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic [토픽명]
2) Topic 리스트 조회
Topic을 여러개 만들었다면, 만들어진 Topic들을 조회할 수 있다.
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
3. Topic 삭제
bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic [토픽명]
STEP 4: CONSUMER GROUP
그룹에 속하는 Consumer가 여러개이면 로드밸런싱을 통해 자동으로 메세지를 분배될 수 있다.
1. Group 생성
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic [토픽명] --group [그룹명]
2. Group 확인
kafka-console-groups.sh --bootstrap-server localhost:9092 --describe --group [그룹명]
3. Group 리스트 확인
여러 Group을 생성하였다면, 생성된 Group들을 확인 할 수 있다.
bin/kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
STEP 5: WRITE SOME EVENTS INTO THE TOPIC
Kafka 클라이언트는 네트워크를 통해 Kafka broker 들과 이벤트를 작성(또는 읽기)하기 위해 통신한다. broker는 이벤트를 일정 기간 저장할 수 있다.
Producer 클라이언트를 실행하여 몇 가지 이벤트를 topic에 기록(write)되도록 하자. 기본적으로 입력하는 각 줄마다 개별 이벤트가 topic에 기록된다.
Producer 클라이언트 실행
$ bin/kafka-console-producer.sh --topic [토픽명] --bootstrap-server localhost:9092
This is my first event
This is my second event
💡Producer 클라이언트를 종료하기 위해서는 Ctrl+C 를 누르면 된다.
STEP 6: READ THE EVENTS
다른 터미널 세션을 열고 콘솔 Consumer 클라이언트를 실행하여 방금 만든 이벤트를 읽어본다.
Consumer 클라이언트 실행하여 이벤트 확인
$ bin/kafka-console-consumer.sh --topic [토픽명] --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event
💡Consumer 클라이언트도 종료하기 위해서 Ctrl+C 를 누르면 된다.
참조 : 아파치 카프카 튜토리얼
'Message Streaming Platform > Kafka' 카테고리의 다른 글
2. 컨슈머 그룹 (Consumer Group) (0) | 2022.11.21 |
---|---|
1. 카프카 컨슈머 소개 (1) | 2022.11.21 |