IT 삽질기

Docker을 이용한 Kafka 시작하기 본문

BigData/Kafka

Docker을 이용한 Kafka 시작하기

화이팅빌런 2021. 5. 2. 22:16

Kafka 시작하기

Docker을 이용해 Kafka를 시작해보자

docker hub에 있는 이미지를 사용했으며 사용한 이미지는 아래의 링크를 참고하기 바란다

hub.docker.com/r/wurstmeister/kafka

github.com/wurstmeister/kafka-docker

 

docker-compose를 사용하기 위해 github에서 다운받는다

 

git clone https://github.com/wurstmeister/kafka-docker.git

 

다운받은 후 compose 파일을 수정한다.

broker을 하나만 올려서 테스트할 것이기 때문에 

docker-compose-single-broker.yml 파일을 수정했으며, 수정한 내용은 아래와 같다

ip에는 사용하고 있는 pc의 ip를 넣어주면 된다.

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: [ipaddress]
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

 

compose 파일의 내용은 잠깐 살펴보면,

kafka를 동작시키기 위해서는 zookeeper도 필요하기 때문에 zookeeper와 port에 대한 설정이 들어있다

 

이제 docker-compose 명령어를 이용해 kafka와 zookeeper을 실행시켜 보자

-f 옵션을 이용해 docker-compose-single-broker.yml 파일을 지정해주고 실행시킨다

docker-compose -f docker-compose-single-broker.yml up

 

docker-desktop을 사용하는 경우에는 아래와 같이 정상적으로 올라온 것을 확인할 수 있다

정상적으로 올라왔다면 docker container에 접근해 명령어를 사용해보자.

먼저 container을 확인한다

docker ps

2개의 container중 kafka 쪽에 접근할 것이며, 아래의 명령어로 /bin/bash shell에 접근할 수 있다

docker exec -it 376c /bin/bash

 

kafka 명령어를 사용하기 위해 kafka home로 설정되어 있는 /opt/kafka로 이동한다.

kafka 명령어들은 bin 디렉토리에 존재하며, 해당 디렉토리로 이동해 topic를 만들고 topic에 데이터를 넣어보자

 

topic 생성하기

topic를 생성하기 위해서는 kafka-topic.sh 파일을 사용하며, bootstrap-server는 필수 옵션으로 사용하는데 최신 kafka 버전에서는 kafka broker ip:port를 사용하면 된다.

partitions, replication-factor등의 옵션을 추가로 적용할 수 있지만 여기서는 다른 옵션은 주지 않고 테스트를 진행했으며, 명시하지 않을 경우 default 값으로 설정된다.

./kafka-topics.sh --bootstrap-server localhost:9092 --topic blog_test --create

 

topic 확인

topic이 잘 생성됐는지 확인해보자

확인을 위해서는 마찬가지로 kafka-topics.sh를 사용하며 --list 옵션을 사용한다

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

이렇게 topic가 정상적으로 생성된것을 확인하면 이제 만든 topic에 record를 보내고 정상적으로 들어갔는지 확인해보자.

 

topic에 record 넣기

record를 넣기 위해서는 kafka-console-producer.sh를 이용하며, 아래와 --topic 옵션으로 topic를 지정하면 원하는 record를 넣을 수 있다.

hello, world는 모두 입력한 것으로 kafka에 record가 들어가게 되었다.

./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic blog_test

 

topic record 확인

record를 확인하기 위해서는 kafka-console-consumer.sh를 사용한다.

--from-beginning 옵션을 사용하는데, 이는 kafka offset중 처음에 있는 record부터 가지고 온다는 것으로 offset등 kafka 용어에 대한 설명은 다음 포스트에서 설명하도록 한다.

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic blog_test --from-beginning

 

'BigData > Kafka' 카테고리의 다른 글

Kafka Acks  (0) 2021.06.08
Kafka-manager을 이용한 Partition reassign  (0) 2021.06.05
Kafka scale out  (0) 2021.06.01
Kafka ISR(In-Sync-Replicas)  (0) 2021.05.29
Kafka 보관 주기 설정하기  (0) 2021.05.28
Comments