개요
이번에는 Windows에 Kafka Connect 설치해보려 합니다.
Kafka Connect는 Apache Kafka 일부로 제공되는 프레임워크로 스트림 데이터를 외부 시스템과 연결하는데 사용합니다.
Kafka Connect는 Kafka Connect Source 와 Kafka Connect Sink 가 있습니다.
Kafka Connect Source :
외부 시스템의 데이터를 가져와 메시지 형태로 Kafka Topic에 저장합니다.
예시) RDBMS에서 변경 사항을 실시간으로 Kafka에 전송할 때 쓰입니다.
Kafka Connect Sink :
Topic에 저장된 메세지를 구독하고 있는 외부 시스템으로 전달합니다.
예시) Kafka Topic에 있는 데이터를 Elasticsearch, RDBMS 등 외부 저장소에 저정하는데 쓰입니다.
Kafka Connect를 사용하면 코드 작성 없이 간단한 설정으로 외부 시스템과 연동을 구현할 수 있습니다.
저는 Kafka Connect를 이용하여 Kafka와 MySQL을 연결하려 합니다.
이번에는 Kafka Connect를 설치, 실행, MySQL을 설정을 정리해 보려 합니다.
Kafka Connect 설치
Confluent 를 사이트에서 다운 받을 수 있습니다.
Confluent는 Kafka를 만든 회사로 각 종 서비스들을 지원한다고 합니다.
Confluent 사이트에서 찾아서 다운 받을 수 있으나 찾기 어려워 링크를 통해 다운 받았습니다.
저는 7.3.1 버전을 다운 받았습니다.
https://packages.confluent.io/archive/7.3/confluent-community-7.3.1.tar.gz
여기서 tar gz 확장자가 나옵니다.
.tar : 여러 개의 데이터를 하나로 묶음
.gz : zip과 같이 압축
즉 .tar.gz 는 데이터를 하나로 묶고 압축한 형태 입니다
만약 다른 버전을 다운 받고 싶다면 아래 링크를 통해 원하는 버전을 다운 받을 수도 있습니다.
저는 다운 받은 파일의 압축을 풀어 C드라이브의 work 폴더에 넣었습니다.
Kafka Connect 실행
Kafka Connect을 실행할 때는 ZooKeeper와 Kafka가 먼저 실행되어 있어야 합니다.
참고로 Kafka Connect의 기본 포트 번호는 8083 입니다.
windows powershell을 열어 confluent의 root 폴더로 이동합니다.
C:\work\confluent-7.3.1
Kafka Connect 실행 명령어를 입력합니다.
bin\windows\connect-distributed.bat etc\kafka\connect-distributed.properties
에러 사항
Classpath is empty. Please build the project first e.g. by running 'gradlew jarAll’
windows를 진행하다 보면 위의 명렁어 에러 사항을 만날 수도 있습니다.
이는 binary 파일을 다운 받고 실행시킨 것이 아니라 source 파일을 다운 받고 실행해 생긴 문제라 합니다.
해결 방법은 다음과 같습니다.
\bin\windows\kafka-run-class.bat 파일을 수정하면 됩니다.
rem Classpath addition for core 부분 위 다음 코드를 삽입합니다.
rem classpath addition for LSB style path
if exist %BASE_DIR%\share\kava\kafka\* (
call:concat %BASE_DIR%\share\java\kafka\*
)
![](https://blog.kakaocdn.net/dn/ck0frn/btsx47F2bNf/YaWjRKSJM3XfkQT7GhdlGk/img.png)
Kafka Connect 실행 확인
토픽 목록을 통해 잘 실행되었는지 확인할 수 있습니다.
Windows PowerShell을 하나 더 열어 Kafka 의 루트 폴더로 경로를 이동합니다.
토픽 목록 확인 명령어를 입력합니다.
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092
토픽 목록 확인
위와 같이 connect-configs, connect-offsets, connect-status 3개의 Topic이 생성되면 잘 실행 된 것 입니다.
MySQL 설정
이번에는 Kafka Connect 와 MySQL을 연결하기 위해 세팅해 보겠습니다.
Kafka Connect JDBC
Kafka Connect JDBC는 Kafka와 RDBMS 사이에 데이터를 이동시키는데 사용되는 Kafka Connect의 플러그인 입니다.
JDBC API 를 활용하여 다양한 RDBMS와 상호작용 합니다.
Kafka Connect JDBC 다운
Kafka Connect와 마찬가지로 Confluenct 사이트에서 다운 받을 수 있습니다.
https://www.confluent.io/hub/confluentinc/kafka-connect-jdbc
JDBC Connector (Source and Sink)
Confluent, founded by the original creators of Apache Kafka®, delivers a complete execution of Kafka for the Enterprise, to help you run your business in real-time.
www.confluent.io
Kafka Connect와 마찬가지로 압축 해제한 다음 work 폴더에 넣었습니다.
Kafka Connect의 설정 파일 변경
Kafka Connect 루트 폴더 \ etc \ kafka 폴더로 들어갑니다.
connect-distributed.properties 파일의 내용을 변경합니다.
맨 아래에 있는 plugin.path를 confluentinc-kafka-connect-jdbc의 lib 폴더의 경로로 변경합니다.
이 때, 경로 사이에는 더블 역슬래쉬를 사용해야 합니다. ( \\ )
plugin.path=\C:\\work\\confluentinc-kafka-connect-jdbc-10.6.3\\lib
MySQL Connector
MySQL Connector는 Apache Kafka 와 MySQL 간의 데이터를 이동하기 위한 플러그인 입니다. MySQL의 데이터 변경 사항을 캡쳐하고 Kafka로 스트리밍하는데 사용됩니다.
MySQL Connector 다운
MySQL 커뮤니티에서 MySQL Connector를 다운 받습니다.
https://dev.mysql.com/downloads/connector/j/?os=26
저는 아래 ZIP을 다운 받았습니다.
압축을 해제하면 폴더 안에 mysql-connector-java-q버전.jar 파일이 있을 겁니다.
이 파일을 kafka Connect의 /share/java/kafka로 복사합니다.
이로써 Kafka와 MySQL의 연결 준비 과정을 완료했습니다.
마무리
이번에는 Kafka Connect를 설치, 실행, 실행 확인해 보았습니다.
다음에는 MySQL 설정을 추가하고 Kafka Source Connectoer와 Kafka Sink Connector를 추가하여 동작을 확인해보겠습니다.
감사합니다.