MATT's

Kafka - 실습 본문

Kafka

Kafka - 실습

matt5659 2020. 8. 3. 21:45

Kafka 전체 동작은 크게

  • Broker
  • Publisher
  • Subscriber

로 나뉜다.

때문에 Kafka를 사용하기 위해서는 먼저 Broker(Kafka Server)를 생성해줘야 한다.

 

1. Broker 생성

Broker로 사용할 서버에서 Kafka를 설치하기 위해 Apache Kafka 공식 페이지의 DOWNLOAD KAFKA로 이동한다.

Scala 버전 별로 Binary 파일들을 제공해주는데, 모든 버전에서 돌아가게 하기 위해서는 2.13 버전으로 다운받을 것을 권장하고 있다.
mirror 되어있는 사이트의 링크를 복사해놓자

1. wget 패키지 설치

# yum -y install wget


2. Kafka 다운로드

# wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz


3. 압축 해제

# tar -xzf kafka-2.6.0-src.tgz


4-1. Java 설치 확인

# java -version
(* Kafka는 Scala라는 언어로 만들어져 있어서 JVM이 필요하기 때문에 JAVA를 설치해서 실행해야한다.)


4-2. Java 설치가 안되어 있으면 설치

# yum -y install java-11-openjdk java-11-openjdk-devel

( 추가적으로 /etc/profile에서 환경변수까지 잡아주도록 합니다. )

 

2. Zookeeper 실행

Apache Zookeeper는 Kafka 클러스터의 최신 설정정보 관리, Kafka 서버들의 동기화, 리더 채택 등 클러스터의 서버들이 공유하는 데이터들을 관리하기 위해 사용된다.

따라서 Kafka server를 실행하기 전에, Zookeeper를 먼저 실행해줘야한다.

다운받은 디렉토리에서 /bin 디렉토리에 들어가서, zookeeper-server-start.sh 스크립트 파일을 실행시켜준다.

(Windows 환경에서는 zookeeper-server-start.bat 파일을 실행시킨다.)

# ./zookeeper-server-start.sh ../config/zookeeper.properties
  • zookeeper-server-start.sh(linux) / zookeeper-server-start.bat(windows)
    - Zookeeper 서버를 실행시키는 파일
  • zookeeper.properties
    - Zookeeper 서버 설정 파일

 

3. Kafka 실행

# ./kafka-server-start.sh ../config/server.properties
  • kafka-server-start.sh(linux) / kafka-server-start.bat(windows)
    - Kafka 서버를 실행시키는 파일
  • server.properties
    - Kafka 서버 설정 파일

 

4. Topic 생성

# ./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 -partitions 1 --topic coffee
  • --create
    > 새로운 토픽을 만들 때 사용하는 옵션
  • --bootstrap-server
    > 연결할 Kafka 서버 ({host}:{port} 형태)
  • --replication-factor
    > Partition 복제 수
    > 옵션을 사용하지 않으면,
       server.properties 파일의 default.replication.factor 항목에 설정된 값을 default로 사용
  • --partitions
    > Topic이 생성되거나 변경될 대의 Partition 수
    > 옵션을 사용하지 않으면,
       server.properties 파일의 num.partitions 항목에 설정된 값을 default로 사용
  • --topic
    > create, alter, describe, delete 옵션에 사용할 Topic 명

* Topic 관련 명령어들

# ./kafka-topic.sh --list --bootstrap-server localhost:9092
  • --list
    > 사용 가능한 Topic 목록 조회
# ./kafka-topic.sh --describe --bootstrap-server localhost:9092 --topic coffee
  • --describe
    > Topic의 상세 정보 조회
# ./kafka-topic.sh --delete --bootstrap-server localhost:9092 --topic coffee
  • --delete
    > Topic 삭제
    > 삭제하기 위해서는 server.properties 파일의 delete.topic.enable=true 설정을 추가해주어야 한다.

 

 

5. Producer

# ./kafka-console-producer.sh --broker-list localhost:9092 --topic coffee
> hi
> hello
> 안녕
  • coffee 토픽으로 메세지를 보낸다. (메세지 생산)

6. Consumer

# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic coffee
hi
hello
안녕
  • coffee 토픽에 도착한 메세지를 수신한다. (메세지 소비)

 

위와 같이 Producer에서 메세지를 생산하면, Consumer에서 바로 화면에 확인이 가능하다.

 

 

[참고]

https://victorydntmd.tistory.com/345?category=798367

'Kafka' 카테고리의 다른 글

kafka란?  (0) 2020.07.29
메세징 시스템(Messaging System)  (0) 2020.07.20