[Kafka] Kafka 삽질하기(1)

드코딩·2024년 8월 6일
0

Kafka

목록 보기
1/1
post-thumbnail

Kafka 테스트 해보기

구체적으로 카프카를 사용하는 이유와 주요 기능, 핵심 용어들을 정리하기에 앞서 먼저 환경을 설치하고 콘솔을 통해 producer와 consumer를 사용해보기 위해 겪은 시행착오 정리하기

Homebrew를 이용한 Kafka 설치

터미널에 brew install kafka brew를 이용해서 카프카를 설치할 수 있다.

kafka 실행하기

  1. brew services start zookeeper
  2. brew services start kafka

위 같은 명령어를 입력해서 zookeeper와 kafka를 실행했다.
하지만 이 방법으로는 이제는 실행되지 않는 것 같았다.

Topic 만들기

Kafka를 설치하면 테스트를 해볼 수 있게 다양한 스크립트를 제공해준다.
이런 스크립트를 사용해서 여러가지를 할 수 있지만 스크립트를 사용하기 위해서는 kafka가 설치된 경로를 알아야 했다.
일단 경로를 알아보기전에 Kafka에서 Topic이 뭔지 간단하게 알아보자

Topic이 뭔가요?
Topic 은 데이터가 들어갈 수 있는 공간을 의미한다.
쉽게 데이터베이스 같은 것이다. 데이터베이스도 데이터를 보관해주듯이
Topic 은 여러개 생성될 수 있고 내부에 여러개의 파티션을 두어
파티션 별로 데이터를 나누어 담을 수 있다.
이러한 토픽은 이름을 가질 수 있다. 이름을 정해주는 방법과 생성한 토픽을
사용하는 것을 이번 글과 다음 글에서 볼 수 있다.
한줄 요약 : Topic 은 데이터가 들어갈 수 있는 이름이 있는 공간이다. (like DB Table)

Kafka가 설치된 경로 알아보기
brew info kafka 를 터미널에 입력하면 아래와 같이 확인할 수 있다.

  • 경로 이동하기 /opt/homebrew/Cellar/kafka/3.8.0/bin
  • kafka-topics 스크립트를 이용해서 토픽 만들기 ./kafka-topics --create --zookeeper [localhost:2181](http://localhost:2181) --replication-factor 1 -partitions 1 --topic hoho 위 명령어를 입력했을 때 아래와 같은오류가 발생했다.

4년전 유튜브를 보면서 따라 하다가 zookeeper 옵션을 사용할 수 없다는 에러를 확인하고 아하 뭔가 이건 버전 차이 이슈가 분명하다는 생각에 공식문서 GetStart를 참고하러 공식문서로 달려갔다!
https://kafka.apache.org/quickstart <- kafka 튜토리얼
위에 서버 실행하는 명령어부터 뭔가 달랐지만 괜찮아! 나는 brew로 설치했잖아 하면서 가볍게 넘겼다.
뭔가 지금 Topic을 Create하는 명령어를 찾았다.
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

내가 입력한 명령어와 차이는 zookeeper 옵션이 아닌 bootstrap-server를 사용했다는 점과 2181포트가 아닌 9092 포트가 다르다는 점을 인지했다.
그럼? 바로~ 구글링 했다. 쉽게 3.0 이상 버전부터는 zookeeper를 사용할 수 없고 bootstrap-server 옵션을 사용해줘야 한다고 했다.
또한 9092 포트를 사용해야 한다는 반응이 대다수였고 공식문서 또한 그렇게 알려주었기에 믿고 따라 했다.

  • 다시 만난 bootstrap-server is not a recognized option
    이번엔 zookeeper가 아닌 이름만 바뀌어서 같은 오류가 발생했다...
    이건 정말 뭔가 단단히 잘 못 됐다.
    자 침착하고 그럼 나는 zookeeper,kafka 실행부터 현재까지 공식문서와 뭐가 다를까 천천히 살펴보았다. brew service start를 했다는 점이었다.
    아... 그렇다면 공식문서에서 bootstrap-server 옵션을 사용하라고 안내 중이기에 사라진 옵션은 아닐 것이고 서버 실행이 잘 못 되었을 것이라는 생각이 들었다.

서버를 공식문서 버전으로 실행하기

  • zookeeper 재실행하기 /opt/homebrew/bin/zookeeper-server-start /opt/homebrew/etc/zookeeper/zoo.cfg
  • kafka 재실행하기
    **`/opt/homebrew/bin/kafka-server-start /opt/homebrew/etc/kafka/server.properties`**
    공식문서에서 정확히 위와 같은 경로를 제공하는 것은 아니지만 zoo.cfg, sever.properties 를 실행하라는 의미로 이해했고
    brew가 설치해둔 경로에서 위 두 파일을 초보자인 나는 매우 매우 어렵게 찾을 수 있었다.
    (공식문서를 볼 때 보이는 것만 믿지 말고 내 환경에서는 어떻게 저 명령어를 사용할 수 있을까 하는 과정이 필요함을 느꼈다.)
    실행해보니 뭔가 쫘르르르르르 나오면서 진짜 실행된 것 같음을 느꼈고 이번엔 정말 실행이 되었다.

어렵게 만든 topic에 값 넣고 실습하기

위와 같은 감격스러운 코드를 볼 수 있었다.
내가 이것을 실습한 이유는 EC2 환경에서 사용하는 것이 목적이었기에 바로 진행해서 결과물을 얻을 수 있었다.
2편에서 EC2 환경세팅 삽질을 기록해보자


⭐틀린 내용 수정,지적은 언제나 환영합니다.⭐

0개의 댓글

관련 채용 정보