Kafka 설치 & 설정 & 실행 (Windows 환경)

0. Kafka 설치 for window
Kafka를 다운받기 위해 홈페이지로 이동합니다. 
https://kafka.apache.org

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 


1. Kafka 다운로드 / ZooKeeper 다운로드
  우측 상단 위에 DOWNLOAD KAFKA 를 클릭해 다운로드 페이지로 이동합니다. 
  3.X.X 버전의 Scala 2.13을 다운

2. tgz 압축 파일 해제 
  tgz 파일을 C:\Users/user/Downloads 에서 압축 해제 합니다.

  Kafka 의 압축 파일에는 MacOS와 Windows 2가지 모두 있고
  MacOS는 bin 폴더 안에 .sh 파일들로 구성
  Windows는 bin 폴더 안에 windows 폴더 안에 .bat 파일들로 구성  

3. 설정
  in windows Java Control Panel 이용 (javacpl.exe)
  Runtime Parameters

 


  * 환경변수 확인
  echo %JAVA_HOME%
  Get-ChildItem Env: in PowerShell
  Get-ChildItem Env: | Format-Table -AutoSize

  config/server.properties
    broker.id=0
    listeners=PLAINTEXT:// localhost:9092
    advertised.listeners=PLAINTEXT://localhost:9092

  setx -m JAVA_HOME " C:\Kafka\Java"

  Error: missing `server' JVM at `C:\Kafka\java\bin\server\jvm.dll'.
  Please install or use the JRE or JDK that contains these missing components.
  >  C:\Kafka\Java\jdk-11\bin\server 폴더 생성 후 jvm.dll을 복사

4. Kafka 실행(테스트)
1) ZooKeeper 실행 & Kafka 실행
    Kafka를 실행하기 전에 ZooKeeper를 먼저 실행
    ZooKeeper는 카프카를 관리하는 코디네이터로 ZooKeeper가 먼저 실행되어야 Kafka를 실행시킬 수 있습니다. 

2) Topic 생성 
    토픽은 프로듀서와 컨슈머의 매개체 입니다. 
    프로듀서가 토픽에 메시지를 보내면 해당 토픽을 구독한 컨슈머들에게 메시지가 전달되게 됩니다. 
    이 때, 토픽에는 메시지가 저장되어 컨슈머가 처음부터 메시지를 받을 수도 있습니다. 

3) Producer 메시지 생성 & Consumer 매시지 수신
    프로듀서를 실행시켜 토픽에 메시지를 보냅니다.
    컨슈머를 실행시켜 토픽에 있는 메시지를 받습니다. 

4) 실행(테스트)
    테스트를 위해서 총 4개의 Windows Powershell 이 필요합니다. 
     ZooKeeper, Kafka, Producer, Consumer 이렇게 4개가 필요합니다. 

1. ZooKeeper 실행 
  ZooKeeper의 기본 포트 번호는 2181 입니다. 
  bin\windows\zookeeper-server-start.bat config\zookeeper.properties

  ZooKeeper 실행 확인 netstat -na | findstr "2181"


2. Kafka 실행 
  Kafka의 기본 포트 번호는 9092 입니다.
  bin\windows\kafka-server-start.bat config\server.properties

  Kafka 실행 확인 netstat -na | findstr "9092"


3. log 확인
  ex) Get-Content <file-name> -Wait -Tail N
  Get-Content server.log -Wait -Tail 10

4. Kafka Topic 생성하기 
  Kafka Topic 생성은 양식이 있습니다. 이 양식을 원하는데로 바꿔서 사용합니다.
1) kafka topic 생성하기
# bin\windows\kafka-topics.bat --create --bootstrap-server 카프카접속주소:포트 --topic 토픽이름
ex) bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test-topic

2) kafka topic 생성확인
# bin\windows\kafka-topics.bat --list --bootstrap-server 카프카접속주소:포트
ex) bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092
kafka topic이 생성되면 C:\tmp\kafka-logs 위치에도 topic의 폴더가 생성됩니다.

3) 토픽을 삭제
# bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic 토픽명
ex) bin\windows\kafka-topics.bat --delete --bootstrap-server localhost:9092 --topic test-topic

4) 재부팅 후 삭제되는 이유
보통은 delete.topic.enable을 true로 설정하면 토픽 삭제가 가능하다. 하지만 안되는 경우도 있다
이럴때는 재시작을 하거나 설정의 log.dir 파일을 삭제하고 재시작하면 되는 경우가 있다.
log.dirs의 기본 경로가 /tmp/kafka-logs인데, 재부팅시 tmp폴더를 정리하는 경우가 있다.

5) 주키퍼와 주키퍼 쉘을 통해 토픽을 삭제하는 방법
(1) 주키퍼 기동
bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties 
(2) 주키퍼 쉘 진입
bin/windows/zookeeper-shell.bat localhost:2181
(3) 토픽 리스트 확인
ls /brokers/topics
(4) 토픽 삭제
deleteall /brokers/topics/test-topic
(5) 토픽 리스트 확인 - 삭제 토픽 확인
ls /brokers/topics

5. 생성된 Topic에 Message 보내기 (Producer)
1) Producer 생성 예시 
# bin\windows\kafka-console-producer.bat --broker-list 카프카접속주소:포트 --topic 토픽이름
ex) bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test-topic
2) Kafka Producer 생성 및 메시지 생성
Producer가 되면 > 가 생깁니다. 메시지를 입력하면 토픽으로 전송됩니다.

6. Topic에서 Message 가져오기 (Consumer)
1) Consumer 생성 예시
# bin\windows\kafka-console-consumer.bat --bootstrap-server 카프카접속주소:포트 --topic 토픽이름
ex) bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic
ex) bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --from-beginning
 —from-beginning 옵션을 추가하면 기존의 발행한 메세지도 모두 가져옵니다.

2) Kafka Consumer 생성 및 메시지 가져오기
  이 상태에서 Producer에 메시지를 입력하면 Consumer가 메시지를 받아오는 것을 확인할 수 있을 겁니다.