[Apache Kafka] 1 - kafka 설치 및 주키퍼 없이 실행하기(Mac OS) / Topic 생성하기

leeng·2024년 6월 24일
0

kafka

목록 보기
1/4

메세지 큐에 관심이 생겨 알아보다가 직접 사용해보고 싶어졌다. 그 중에서 대규모 시스템에서 많이 사용한다고 알려진 apache kafka에 더 관심이 가서 우선 kafka를 공부해보기로 했다. 생각보다 개념이 복잡하고 어려워서 복습할 겸 블로그에 정리해보려고 한다.

1. kafka 설치

brew를 사용하는 경우 아래 명령어로 kafka를 설치한다.

brew install kafka

설치를 끝내고 kafka가 설치된 디렉토리의 bin 폴더로 가보면 아래와 같이 여러 개의 sh 파일들이 설치되어 있는 것을 확인할 수 있다.

2. kafka 실행

kafka를 실행하는 방법에는 zookeeper와 함께 실행하는 방법과 zookeeper 없이 실행하는 방법이 존재한다.

2-1. zookeeper와 함께 kafka 실행

zookeeper-server-start.sh (본인 pc의 카프카 config 경로)/zookeeper.properties 명령어로 zookeeper를 실행한다.

zookeeper-server-start.sh (본인 pc의 카프카 config 경로)/zookeeper.properties

-- 명령어 예시
zookeeper-server-start.sh /opt/homebrew/Cellar/kafka/3.7.0/libexec/config/zookeeper.properties

만약에 zookeeper-server-start.sh 로 실행이 되지 않는다면 환경변수 설정을 하거나 카프카 bin 폴더 안에서 ./zookeeper-server-start.sh 로 실행하면 작동할 것이다.

kafka-server-start.sh (본인 pc의 카프카 config 경로)/server.properties 명령어로 kafka server를 실행한다.

kafka-server-start.sh (본인 pc의 카프카 config 경로)/server.properties

-- 명령어 예시
kafka-server-start.sh /opt/homebrew/Cellar/kafka/3.7.0/libexec/config/server.properties

2-2. zookeeper 없이 kafka 실행(KRaft 모드)

1) 아래 명령어로 uuid 생성

kafka-storage.sh random-uuid -- 생성된 uuid가 출력된다. ex) 8OrZqVa1Sp2G_OAujOnKAA

2) 카프카가 데이터를 저장하는 경로를 format
아래 명령어로 kraft-combined-logs(카프카가 로그 데이터를 저장하는 경로)를 format하여 초기화한다. 참고로 지정된 UUID는 클러스터 ID로 설정된다.

kafka-storage.sh format -t <위에서 생성한 uuid> -c  /opt/homebrew/Cellar/kafka/3.7.0/libexec/config/Kraft/server.properties
-- kafka-storage.sh format -t 8OrZqVa1Sp2G_OAujOnKAA -c  /opt/homebrew/Cellar/kafka/3.7.0/libexec/config/Kraft/server.properties

3) 카프카 서버 실행

kafka-server-start.sh (본인 pc의 카프카 config 경로)/server.properties 명령어로 kafka server를 실행한다.

kafka-server-start.sh (본인 pc의 카프카 config 경로)/server.properties 

-- 데몬으로 실행할 경우
kafka-server-start.sh -daemon (본인 pc의 카프카 config 경로)/server.properties 

참고로 앞으로 카프카는 주키퍼를 제거하는 방향으로 나아갈 것이므로 주키퍼 없이 사용하는 것을 권장한다고 한다.

  • 혹시나하고 윈도우에서 실행해봤는데 KRaft 모드로 문제 없이 실행된다!

3. Topic 생성 및 조회하기

1) 토픽 생성

kafka-topics.sh --bootstrap-server localhost:9092 --topic 생성할 토픽명 --create 명령어로 토픽을 생성한다.
아래는 first_topic이라는 이름의 토픽을 생성한 결과이다. localhost:9092 부분은 부트스트랩 서버의 port를 변경했거나 다른 브로커를 부트스트랩 서버로 설정하고 싶으면 그에 맞게 변경해주면 된다.

2) 토픽 조회

kafka-topics.sh --bootstrap-server localhost:9092 --list
명령어로 토픽을 조회할 수 있다.

  • 부트스트랩 서버 (Bootstrap Servers)란?
    부트스트랩 서버는 Kafka 클라이언트(프로듀서 또는 컨슈머)가 초기 연결을 설정하는 데 사용되는 브로커의 목록으로 부트스트랩 서버의 주요 역할은 클라이언트가 클러스터의 메타데이터(ex. 브로커 목록, 토픽 정보 등)를 가져올 수 있도록 하는 것이라고 한다.
    예를 들어 내 pc에 localhost:9092, localhost:9093 localhost:... 와 같이 여러 개의 포트에 해당하는 여러 개의 브로커가 존재할 때, bootstrap-server를 통해 모든 브로커의 정보를 받아올 수 있는 것이다.

3) 기타 토픽 CLI 명령어 옵션

  • kafka-topics.sh --bootstrap-server localhost:9092 --topic first_topic --describe : 지정한 토픽에 대한 세부 정보(파티션, 복제본, ISR) 등의 정보 표시

  • kafka-topics.sh --bootstrap-server localhost:9092 --topic first_topic --delete : 토픽 삭제

  • kafka-topics.sh --bootstrap-server localhost:9092 --topic first_topic --create --partitions 3 : 생성할 토픽에 3개의 파티션을 생성

  • kafka-topics.sh --bootstrap-server localhost:9092 --topic first_topic --create --partitions 3 --replication-factor 2 : 각 파티션에 2개의 레플리카 생성

profile
기술블로그보다는 기록블로그

0개의 댓글