Data Engineering/Kafka

[kafka] 카프카에서 토픽 생성하는 방법

박경태 2021. 12. 26. 16:58

1. 도커 컴포즈 파일 작성

docker-compose.yml 파일을 작성한다

version: '3'

services:

  # wurstmeister/zookeeper:3.4.6
  zookeeper:
    hostname: zookeeper
    container_name: zookeeper
    image: wurstmeister/zookeeper:3.4.6
    ports:
      - "2181:2181"

  # wurstmeister/kafka:2.13-2.8.1
  kafka:
    hostname: kafka
    container_name: kafka
    image: wurstmeister/kafka:2.13-2.8.1
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "test:1:1"
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper

그리고 도커 컴포즈를 실행해보자

docker-compose up -d

실제로 도커 컨테이너가 잘 실행됐는지 확인해보자

docker ps

잘 실행된 것을 확인할 수 있다.

 

2. 카프카 접속

카프카 컨테이너에 접속해보자

docker exec -it kafka bash

접속이 잘 됐다.

 

3. 카프카 관련 명령어를 사용해보자

먼저 현재 상태의 토픽이 무엇이 있는지 확인해보자

kafka-topics.sh --list --bootstrap-server kafka:9092

 

test라는 이름을 가진 토픽이 있는 것을 확인할 수 있다.

우리는 test123 이라는 토픽을 만들어보자

kafka-topics.sh --create --bootstrap-server kafka:9092 --replication-factor 1 --partitions 1 --topic test123

 

만들어졌다는 내용이 뜨면,

다시한번 현재 카프카에 있는 토픽 리스트를 조회해보자

kafka-topics.sh --list --bootstrap-server kafka:9092

 

방금 명령어로 만든 test123이라는 토픽이 잘 생성된 것을 확인할 수 있다.

test123 토픽의 상세내용을 확인하는 명령어를 입력해보자

kafka-topics.sh --describe --bootstrap-server kafka:9092 --topic test123

 

test123이라는 토픽을 만들 때 레플리카를 1 파티션을 1로 만들었는데,

만든 명령어와 동일하게 토픽이 만들어진 것을 확인할 수 있다.

 

test123이라는 토픽의 파티션이 현재 1인데, 2로 늘려보자

kafka-topics.sh --zookeeper zookeeper:2181 --alter --topic test123 -partitions 2

 

경고가 떳으나, 성공적으로 추가됐다고 한다.

다시한번 토픽 상세보기로 파티션이 2로 증가했는지 확인해보자

kafka-topics.sh --describe --bootstrap-server kafka:9092

 

test123 토픽의 파티션이 2개로 늘어난 것 같다.

3개로 늘려보자.

kafka-topics.sh --zookeeper zookeeper:2181 --alter --topic test123 -partitions 3

kafka-topics.sh --describe --bootstrap-server kafka:9092