본문 바로가기
프로그래밍

[Kafka] Apache Kafka 설치 및 테스트(for Windows)

by kjchoi 2022. 3. 22.
반응형

Apache Kafka란?

Apache Kafka는 움직이는 데이터를 처리하는 Data in Motion Platform, 연속적인 Event 데이터를 처리하는 Event Streaming Platform 입니다.

 

Event는 비즈니스에서 일어나는 모든 일 또는 데이터를 의미합니다. 배달앱에서 음식을 주문하거나 배달이 어디쯤 오고 있는지 위치를 조회하거나 택시의 GPS 좌표를 조회하거나 은행에서 돈을 이체하는 등 이러한 것들을 Event라고 합니다. Event Stream은 이렇게 연속적이고 많은 Event들의 흐름을 의미하고 Apache Kafka는 이런 Event Stream을 처리해주는 역할을 합니다.

 

Apache Kafka는 링크드인(Linked In)에서 Event Stream 처리를 위해 개발되었고 2011년에 Apache Software Foundation에 기부되어 오픈소스화 되었습니다.

 

Apache Kafka의 주요 특징으로는 대용량의 Event Stream을 안전하게 전송, Event Stream을 디스크에 저장, Event Stream을 분석 및 처리가 있습니다.

 

Kafka는 Apache Kafka와 Confluent Kafka 두 종류가 있습니다. Apache Kafka는 오픈 소스이고 Apache 2.0 라이선스를 따르고 있습니다. Confluent는 링크드인(Linked In)에서 Kafka를 최초 개발한 사람(Jay Kreps)들이 만든 회사이고 Apache Kafka에 기능을 더해 부가적인 기능들을 추가해서 Enterprise 서비스를 제공하고 있습니다. 제공하는 기능에 따라 Community 라이선스와 Enterprise 라이선스가 있습니다.

 

Apache 2.0 라이선스는 수정과 배포가 자유로운 것으로 알고 있는데 Apache 2.0 라이선스를 포함해서 라이선스들의 종류와 내용에 대해서는 더 알아보고 공부하시길 추천드립니다. 저도 대충만 알고 자세히는 모르고 있어서 제대로 사용하기 위해서는 더 공부가 필요합니다. 😭

 

 

Apache Kafka 다운로드

여기서는 오픈 소스인 Apache Kafka를 사용하도록 하겠습니다. 아래 링크로 이동해 Apache Kafka 파일을 다운로드 받습니다. 저는 3.1.0 버전의 Binary downloads에서 Scala 2.13 버전을 다운로드 하였습니다. 파일이 다운로드 완료되면 압축 해제를 해줍니다.

 

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

 

 

Apache Kafka 설치

설치라고 표현했지만 사실 특별한 내용은 없습니다. 위에서 압축 해제한 kafka 폴더를 원하는 위치로 이동만 시켜주면 끝입니다. 앞으로 kafka 사용은 이곳에 위치한 kafka를 사용 할 예정입니다.

 

 

Apache Kafka Quick Start

kafka 폴더로 들어가보면 여러개의 폴더가 있는데 우리는 주로 bin과 config 폴더 위주로 사용한다고 보면 됩니다. 모두 아시겠지만 bin 폴더에는 실행 파일, config 폴더에는 설정 파일들이 들어있습니다. bin 폴더에 들어가 보면 windows 폴더가 또 하나 있는데 이건 Windows 운영체제용 파일입니다. 처음에 이거 있는지 몰라서 조금 고생을 했네요..😅

 

Zookeeper 서비스 시작

Kafka를 사용하기 위해선 Zookeeper가 필요합니다. 조만간 Zookeeper 없이도 쓸 수 있는 버전이 나온다고는 하는데 아직 안 나왔으니 Kafka를 사용하기 위해 아래 명령어를 입력해 Zookeeper 서비스를 시작 시켜줍니다. 경로를 잘 확인해주시기 바랍니다. 관련 설정 파일은 config 폴더에 zookeeper.properties 파일입니다. 필요시 원하는 설정값으로 변경해주시면 되는데 여기서는 변경하지 않고 기본 설정값을 사용하도록 하겠습니다.

$ cd bin
$ cd windows
$ zookeeper-server-start.bat ../../config/zookeeper.properties

 

이렇게 Zookeeper 서비스가 시작되면 로그를 보고 아래 처럼 Bind가 잘 됐는지도 확인해줍니다. Zookeeper 서비스 창은 닫지 말고 그대로 계속 열어둡니다.

 

 

 

Kafka Broker 서비스 시작

Kafka Broker 서비스를 시작하기 전에 관련 설정 파일인 config 폴더의 server.properties 파일을 열어 listeners 속성의 주석을 해제하고 사용중인 host 이름을 입력 후 파일을 저장합니다. 그 외의 속성은 기본값을 사용하도록 하겠습니다.

 

 

새로운 명령 프롬프트 창을 열고 아래와 같이 명령어를 입력하여 Kafka Broker 서비스를 시작합니다. 경로를 잘 확인해주시기 바랍니다.

$ kafka-server-start.bat ../../config/server.properties

 

로그를 확인하여 Kafka Broker 서비스가 잘 시작됐는지 확인합니다. id가 0인 KafkaServer가 시작됐다는 것을 확인 할 수 있습니다. Kafka Broker 서비스 창도 Zookeeper 서비스 창과 동일하게 창을 닫지 말고 그대로 열어둡니다.

 

 

Topic 생성

Kafka는 기본적으로 Topic이라는 논리적인 공간이 있어야 합니다. 새로운 명령 프롬프트 창을 열고 아래 명령어를 입력하여 quickstart-events라는 Topic을 생성해보도록 하겠습니다. 경로를 잘 확인해주시기 바랍니다. Topic명은 최대 길이 249까지 가능하니 길이를 초과하지 않도록 합니다.

$ kafka-topics.bat --create --topic quickstart-events --bootstrap-server localhost:9092

 

Topic 생성 후 생성이 잘 됐는지 아래 명령어를 입력하여 확인합니다. quickstart-events Topic이 정상적으로 생성된 것을 확인 할 수 있습니다.

$ kafka-topics.bat --list --bootstrap-server localhost:9092

 

 

Producer로 Topic에 Event 쓰기

Zookeeper 서비스를 시작하고 Kafka Broker 서비스도 시작하고 Topic도 만들어 기본적인 준비를 마쳤으니 Kafka Producer를 사용하여 Topic에 Event를 write 해보겠습니다.

아래와 같이 명령어를 입력하여 Kafka Producer를 실행시킨 후 Topic에 쓸 Event들을 입력하고 엔터 키를 누르면 Topic에 Event가 write 됩니다.

$ kafka-console-producer.bat --topic quickstart-events --bootstrap-server localhost:9092

# 2개의 Event를 write 해봤습니다.
> My First Event!
> My Second Event!!

 

Consumer로 Topic의 Event 읽기

Kafka Producer를 사용하여 Topic에 Event들을 write 해놨으니 그것들을 Read 해와야 하겠죠? Kafka Consumer를 사용하여 읽어오도록 하겠습니다. 새로운 명령 프롬프트 창을 열고 아래와 같이 명령어를 입력하여 Kafka Consumer 서비스를 실행시켜 줍니다. 실행과 동시에 Topic에 쌓여있는 Event들을 읽어오는 것을 확인 할 수 있습니다.

--from-beginning 옵션을 사용하면 Topic의 처음 내용부터 읽어오고 사용하지 않으면 현재부터 Topic에 쌓이는 Event들만 가져옵니다.

$ kafka-console-consumer.bat --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

 

열려있는 Kafka Producer 서비스 창에서 Event를 계속 Topic에 보내면 Kafka Consumer 서비스 창에서 실시간으로 Topic에 쌓여있는 Event들을 가져오는 것을 확인 할 수 있습니다. 한글도 입력해봤는데 Kafka Consumer에서 가져온 결과를 보니 다 깨져있군요. 정상적으로 처리되려면 어디에선가 무엇을 해줘야 하는거 같습니다. 그건 아직 모르니 차차 공부하면서 알아보도록 하겠습니다. 😅

 

 

 

마무리

이것으로 Apache Kafka 설치 및 간단한 테스트를 마치도록 하겠습니다. 더 자세한 내용은 아래 Apache Kafka Quickstart 공식 링크에 가셔서 확인해보시기 바랍니다.

 

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

 

 

 

[Java] OpenJDK 11 설치하기(JDK Builds from Oracle)

Java 프로그래밍을 하기 위해 처음에 해야할건 무엇일까요?그렇죠. Java 설치를 먼저 해야겠죠? 너무 당연했나요? 😅그럼 Java의 무료 버전인 OpenJDK를 설치해보도록 하겠습니다.OpenJDK도 종류가 여

kjchoi.co.kr

 

 

[Spring] STS 4 설치 및 설정하기(Spring Tool Suite 4)

Spring 개발을 위한 개발도구인 STS4(Spring Tool Suite 4)를 설치해보도록 하겠습니다.STS는 Spring 기반 엔터프라이즈 애플리케이션 개발을 위한 도구입니다. STS 말고도 일반 Eclipse나 IntelliJ IDEA도 사용 가

kjchoi.co.kr

 

 

[JavaScript] Node.js 설치하기(with Windows Terminal)

Node.js란? Node.js 많이 들어본거 같은데 무엇일까요? 간단하게 설명하면 원래 JavaScript는 웹 브라우저 안에서만 동작이 가능했는데 이런 JavaScript를 웹 브라우저 밖에서도 사용할 수 있게 만든 것이

kjchoi.co.kr

 

 

[JavaScript] NVM 설치하기(for Windows)

NVM이란?NVM은 Node Version Manager의 약자이고 여러 버전의 Node.js 설치 및 버전 변경을 관리해주는 도구입니다. NVM을 사용하면 상황에 맞게 Node.js를 원하는 버전으로 설치하거나 변경할 수 있습니다.

kjchoi.co.kr

 

 

[Git] Git 설치하기(Version Control System)

Git이란? 간단하게 설명하면 Git은 버전 관리 시스템입니다. 주로 개발중인 소스코드 버전관리 하는 용도로 많이 사용되고 있습니다. 아래는 Git 공식 홈페이지에 안내된 설명입니다. Git은 소규모

kjchoi.co.kr

 

반응형