본문 바로가기
Message Streaming Platform/Kafka

카프카 시작하기 with 명령어 (Apache Kafka Command)

by 댓츠굿 2023. 10. 18.

카프카 설치하는 것에서부터 토픽 생성 및 이벤트 확인하는 것까지 정리해 보았다.

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.propertiesKafka 브로커 설정 파일이며, 포트나 데이터 보관주기 설정되어 있다.

 

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