Jgtony Developer blog

Apache Kafka 사용하기

Kafka 란?

Kafka는 publisher-subscriber 모델의 메세지 큐이고, 분산환경에 특화되어 설계되었다. 기존의 많은 다른 메세지 큐와 비교하였을 때 월등하게 성능 처리가 좋고, 필자는 여기서 Spark Structured Streaming 환경을 구성하기 위해 kafka 를 사용하였다. 기존의 publisher-subscriber 에 대한 개념은 이전 MQTT 에서도 한번 다룬 적이 있다.



설치 환경

Linux Mint 18.3 Sylvia (Ubuntu 16.04 기반)



설치 방법

먼저 Java8 과 Zookeeper 를 선행으로 설치하여야 한다.

sudo apt apt-get install openjdk-8-jdk
sudo apt-get install zookeeperd

모두 설치가 완료되면 이제 Kafka 를 설치해야 한다.

공식 홈페이지에 들어가서 직접 다운로드 받을 수도 있고, 미러 링크를 알고 있다면 다음과 같이 콘솔에서 설치해도 된다.

wget http://apache.tt.co.kr/kafka/2.1.0/kafka_2.11-2.1.0.tgz
tar xvzf kafka_2.11-2.1.0.tgz

이로서 kafka 설치는 끝이 난다.



실행 방법

순서가 매우 중요하다. 헷갈릴 수 있기 때문에 하나씩 차근차근 실행해야 한다.

  1. 먼저 zookeeper 를 실행한다. kafka 는 zookeeper 를 사용하여 돌아가기 때문에 선행으로 먼저 실행되어 있어야 한다. 해당 kafka 폴더에서 bin/zookeeper-server-start.sh config/zookeeper.properties 를 입력하여 실행한다.

  2. 그 후 kafka 서버를 실행한다. 해당 kafka 폴더에서 bin/kafka-server-start.sh config/server.properties 를 입력하여 실행한다.

  3. Topic 을 생성한다. kafka 서버가 실행되었으므로 topic 을 발행할 수 있다. bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test default config 값으로 localhost:2181 로 되어있지만, 설정을 바꾼다면 해당 내용을 바꾸어 주면 된다.

  4. 생성된 topic 을 확인한다. 정상적으로 발행되었는지 확인하기 위해 bin/kafka-topics.sh --list --zookeeper localhost:2181 과 같이 확인해보면 아까 발행한 topic 을 볼 수 있다.

  5. 이제 producer 를 생성한다. 메세지를 보내는 주체가 되는 producer 를 생성하기 위해서는 다음과 같이 할 수 있다. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 아까 생성한 topic 에 메세지를 보낼 수 있다.

  6. 메세지를 받을 consumer 를 생성한다. 해당 topic 에 대한 메세지를 받을 consumer 이다. bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning



데모 영상

아래 영상은 test 라는 topic 을 미리 발행해 놓은 상태이다

Comments