[공부정리] Kafka connect 사용하기

jeyong·2024년 3월 4일
1

공부 / 생각 정리  

목록 보기
34/120
post-custom-banner


이번 게시글에서는 Kafka Connect의 특징과 설정 중 발생할 수 있는 오류, 데이터 통합 환경을 구축하는 과정들에 대한 해결 방법을 작성할 것이다. window 환경에서 Kafka Connect를 직접 설치하는 과정은 복잡하니 해당 과정을 직접 작성하도록 하겠다.

1. Kafka connect

Kafka Connect는 데이터 파이프라인 구축을 간소화하고 효율화하는 데 중점을 둔 도구이다. 이는 마이크로서비스 아키텍처에서 데이터베이스 연결 및 처리 작업을 직접 관리하는 대신, 이러한 작업들을 Kafka 시스템에 위임함으로써 구현된다. Kafka Connect를 사용함으로써, 개발자와 시스템 관리자는 데이터 통합 과정에서 발생할 수 있는 복잡성과 시간 소모를 크게 줄일 수 있다.
Kafka Connect는 소스(Sources)와 싱크(Sinks)라는 두 가지 주요 컴포넌트로 구성되어 있다. 소스 커넥터는 다양한 데이터 소스로부터 데이터를 추출하여 Kafka 토픽에 푸시하는 역할을 하며, 싱크 커넥터는 Kafka 토픽의 데이터를 읽어 외부 시스템이나 데이터베이스에 저장한다.

더 자세한 내용은 아래 게시글을 추천한다.

https://medium.com/@meghabedi13/kafka-connect-series-part-1-9d11621d08e5

2. 환경 구축

2-1. Confluent Platform 다운로드 및 압축 해제

2-2. Kafka Connect JDBC Connector 설치

  • Confluent Hub에서 kafka-connect-jdbc 다운로드: Confluent Hub
  • .\etc\kafka\connect-distributed.properties 파일 마지막에 아래 plugin 정보 추가

2-3. MariaDB JDBC 드라이버 설치

  • MariaDB JDBC 드라이버 다운로드: MariaDB JDBC Driver
  • 다운로드 받은 mariadb-java-client-3.3.3.jar 파일을 ./share/java/kafka/로 복사.

2-4. Kafka Connect 실행

  • Kafka Connect를 배치 파일을 이용해 실행
.\bin\windows\connect-distributed.bat .\etc\kafka\connect-- distributed.properties

3. 발생하는 오류

3-1. Classpath is empty. Please build the project first e.g. by running ‘gradlew jarAll’

  • 오류 메시지
Classpath is empty. Please build the project first e.g. by running ‘gradlew jarAll’
  • 해결 방법: connect-distributed.bat 파일에서 rem Classpath addition for core 부분을 찾고 그 위에 LSB 스타일 경로를 위한 클래스패스 추가 코드를 삽입.

3-2. log4j:ERROR Could not read configuration file from URL

  • 오류 메시지
log4j:ERROR Could not read configuration file from URL [file:C:/kafka_demo/confluent-6.1.0/config/tools-log4j.properties].
  • 원인: connect-distributed.bat에서 잘못된 log4j 경로 설정.
  • 해결 방법: connect-distributed.bat 파일 내 log4j 경로를 %BASE_DIR%/etc/kafka/connect-log4j.properties로 수정.

4. 사용 방법

4-1. Connect REST Interface 사용

Kafka Connect의 REST API를 사용하여 커넥터 관리할 수 있다. 자세한 내용은 아래 공식문서를 참고하는 것을 추천한다.

https://docs.confluent.io/platform/current/connect/references/restapi.html

4-2. Kafka Source/Sink Connect

{
    "name" : "ecommerce-source-connect",
    "config" : {
            "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector",
            "connection.url":"jdbc:mariadb://localhost:3306/ecommerce",
            "connection.user":"root",
            "connection.password":"2721",
            "mode": "incrementing",
            "incrementing.column.name" : "id",
            "table.whitelist":"ecommerce.users",
            "topic.prefix" : "ecommerce_",
            "tasks.max" : "1",
            "topic.creation.default.replication.factor": 1,
            "topic.creation.default.partitions": 1
        }
}
{
  "name" : "ecommerce-sink-connect",
  "config" : {
          "connector.class" : "io.confluent.connect.jdbc.JdbcSinkConnector",
          "connection.url":"jdbc:mariadb://localhost:3306/ecommerce",
          "connection.user":"root",
          "connection.password":"2721",
          "auto.create":"true",
          "auto.evolve":"true",
          "delete.enabled":"false",
          "tasks.max":"1",
          "topics": "ecommerce_users"
      }
}

Connector 옵션에 대해서는 아래 게시글을 참고하는 것을 추천한다.

https://soojong.tistory.com/entry/Source-Connector-%EC%83%9D%EC%84%B1-%ED%95%98%EA%B8%B0-feat-Topic-%EC%9E%90%EB%8F%99%EC%83%9D%EC%84%B1

5. 읽어보면 좋은 글

Kafka connect에 대해서 공부하며 알게된 좋은 글을 추천한다. kakao 기술 블로그에서 작성한 커스텀 커넥터를 개발한 과정을 담고 있는 게시글이다. 해당 게시글을 읽으면 Kafka connect에 대한 새로운 시각을 얻을 수 있을 것이다.

https://tech.kakao.com/2023/01/12/introduce-kafka-sink-connector/

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.
post-custom-banner

0개의 댓글