250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 오블완
    • 뉴스앱
    • 티스토리챌린지

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    [Apache Kafka] 설치 및 실행
    개발/Kafka

    [Apache Kafka] 설치 및 실행

    2023. 12. 7. 17:26
    728x90
    반응형
    개요

    Apache Kafka는 대규모 실시간 데이터 스트리밍 및 메시징 플랫폼입니다. 이는 대량의 데이터를 안정적으로 처리하고, 여러 시스템 간에 데이터를 신속하게 전송하고, 실시간으로 데이터를 처리할 수 있는 기능을 제공합니다.

    Kafka는 분산형 publish-subscribe 메시지 큐로서, 데이터를 프로듀서(Producer)가 생성하고, 이를 컨슈머(Consumer)가 실시간으로 읽을 수 있도록 하는 시스템입니다. 이 메시지 시스템은 여러 토픽(Topic)으로 구성되어 있으며, 각 토픽은 관련된 메시지들의 스트림을 담당합니다.

    Kafka의 주요 특징 중 하나는 높은 확장성과 내결함성을 가지고 있다는 것입니다. 이는 Kafka 클러스터를 통해 데이터의 병렬 처리와 분산 저장을 가능하게 하며, 이를 통해 높은 처리량과 데이터의 손실 없이 안정적인 작동이 가능합니다.

    데이터 파이프라이닝, 웹 트래픽 로그, 이벤트 스트리밍, 실시간 분석, 지표 수집 등 다양한 사용 사례에서 Kafka가 활용됩니다. 데이터의 안정적인 전송과 처리를 요구하는 많은 기업 및 시스템에서 Kafka를 선택하는 경우가 많습니다.

     

     

    Kafka 설치 및 실행

    Kafka공식홈페이지에서 다운로드를 받습니다.

    Kafka Download 페이지

    현재 가장 최신버전인 3.6.0버전을 다운받습니다.

    Binary 파일을 실행시켜줘야 하므로 Scala 2.13  - kafka_2.13-3.6.0.tgz 파일을 다운받아 줍니다.

    다운받은 파일을 적당한 위치로 옮긴 후 압축을 풀어줍니다.

    압축을 푼 폴더에 bin 폴더에는 리눅스 환경일 경우 실행할 bin 파일들이 있고 bin 폴더에서 windows 폴더로 들어가면 windows 환경에 실행할 bat 파일들이 있습니다.

    실행 및 테스트는 zookeeper와 kafka를 실행하고 producer로 메세지를 전송하고 consumer에 메세지가 전달되는지 확인해보면 됩니다. 실행할 파일들은 아래와 같습니다.

    zookeeper-server-start.bat : zookeeper 실행

    kafka-server-start.bat : kafka 실행

    kafka-console-producer.bat : console에서 kafka로 메세지를 전달할수 있게 해줌(producer 역활)

    kafka-console-consumer.bat : producer에서 전달한 메세지를 kafka에 요청해서 console에 노출(소비)해줌(consumer 역활)

     

    Kafka와 같은 분산 시스템에서는 ZooKeeper가 Kafka 브로커(Broker)들 간의 상태를 관리해줍니다. Kafka 브로커는 한개 이상으로 클러스터 구성을 할 수 있고 Zookeeper를 통해 Kafka 브로커들 간의 상태를 관리하게 됩니다. Kafka 브로커는 Kafka를 의미합니다.

     

    producer -> kafka broker-> consumer

    producer와 consumer는 각각 다른 시스템입니다.(ex producer : 이벤트서버, consumer : 어플리케이션 서버)

     

    kafka_2.13-3.6.0\bin\windows 폴더에서 아래 명령어를 통해 zookeeper를 실행해줍니다.

    .\zookeeper-server-start.bat ..\..\config\zookeeper.properties

     

    zookeeper 실행한 cmd를 그대로 두고 새로운 cmd를 실행해서 kafka server를 실행해 줍니다.

    .\kafka-server-start.bat ..\..\config\server.properties

     

    이제 메세지를 전달할 producer와 메세지를 소비할 consumer 테스트를 위해 cmd를 새로 열어서 topic 을 생성하는 bat파일을 실행해봅니다. topic은 데이터를 최종적으로 저장하는 곳이고 데이터를 구분하는 저장소입니다.

    아래의 명령어는 localhost:9092 kafka 서버에 syk531 topic을 생성하는 명령어입니다.

    9092 포트는 아까 kafka를 실행하는 명령어를 통해 kafka가 실행되는 default port 입니다.

    .\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic syk531

    kafka server cmd에서 topic이 생성되었다는 로그가 추가되었음을 확인할 수 있습니다.

     

    아래의 명령어를 입력하면 console이 producer가 됩니다. 아래로 한줄이 내려가고 메세지를 보낼수 있습니다.

    .\kafka-console-producer.bat --broker-list localhost:9092 --topic syk531

     

    메세지를 몇개 보낸 후 consumer를 확인해보기 위해 새로운 cmd에서 아래의 명령어를 입력해줍니다.

    --from-beginnin 옵션을 주면 기존에 쌓여있는 메세지를 가져오게 됩니다.

    .\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic syk531 --from-beginning

     

    이제 producer console에서 메세지를 입력하면 consumer console에 노출되는것을 확인할 수 있습니다.

     

     

    참고자료

    https://always-kimkim.tistory.com/entry/kafka101-broker

    https://kafka.apache.org/downloads

    https://oingdaddy.tistory.com/274

    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > Kafka' 카테고리의 다른 글

    [Apache Kafka] 자주 사용하는 명령어  (0) 2023.12.11
    [Apache Kafka] CMAK 설치 방법  (1) 2023.12.11
    [Apache Kafka] connect, connector  (0) 2023.12.10
    [Apache Kafka] topic 삭제 방법  (0) 2023.12.10
    [Apache Kafka] Spring boot에 Kafka 적용해보기  (0) 2023.12.08
      '개발/Kafka' 카테고리의 다른 글
      • [Apache Kafka] CMAK 설치 방법
      • [Apache Kafka] connect, connector
      • [Apache Kafka] topic 삭제 방법
      • [Apache Kafka] Spring boot에 Kafka 적용해보기
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바