본문 바로가기

전체 글58

[Kafka] 아파치 카프카 기본 개념 :: 카프카 커넥트 - 싱크 커넥터 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리싱크 커넥터는 토픽의 데이터를 타깃 애플리케이션 또는 타깃 파일로 저장하는 역할을 한다.싱크 커넥터를 만들 때는 connect-api 라이브러리를 추가해야 한다. connect-api 라이브러리에는 커넥터를 개발하기 위한 클래스들이 포함되어 있다. 소스 커넥터를 만들 때 필요한 클래스는 2개다. 첫 번째는 SinkConnector이고 두번째는 SinkTask이다. SinkConnector는 태스크를 실행하기 전에 사용자로부터 입력받은 설정값을 초기화하고 초기화하고 어떤 태스크 클래스를 사용할 것인지 정의하는 데에 사용한다. SinkConnector에는 실질적인 데이터 처리 로직이 들어가지 않는다.SinkTask가 커넥트에서 컨슈머 역할.. 2024. 11. 6.
[Kafka] 아파치 카프카 기본 개념 :: 카프카 커넥트 - 소스 커넥터 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리소스 커넥터는 소스 애플리케이션 또는 소스 파일로부터 데이터를 가져와 토픽으로 넣는 역할을 한다.소스 커넥터를 만들 때는 connect-api 라이브러리를 추가해야 한다.connect-api 라이브러리에는 커넥터를 개발하기 위한 클래스들이 포함되어 있다.소스 커넥터를 만들 때 필요한 클래스는 2개다. 첫 번째는 SourceConnector이고 두번째는 SourceTask이다. SourceConnector는 태스크를 실행하기 전 커넥터 설정파일을 초기화하고 어떤 태스크 클래스를 사용할 것인지 정의하는 데에 사용한다. 그렇기 때문에 SourceConnector에는 실질적인 데이터를 다루는 부분이 들어가지 않는다.SourceTask가 실제로.. 2024. 11. 5.
[Kafka] 아파치 카프카 기본 개념 :: 카프카 커넥트 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리카프카 커넥트(kafka connect)는 카프카 오픈소스에 포함된 툴 중 하나로 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션이다.커넥트는 특정한 작업 형태를 템플릿으로 만들어놓은 커넥터(connector)를 실행함으로써 반복 작업을 줄일 수 있다.커넥터는 각 커넥터가 가진 고유한 설정값을 입력받아서 데이터를 처리한다. 예를 들어, 파일의 데이터를 토픽으로 보내는 커넥터가 있다면 파일이 존재하는 디렉토리 위치, 파일 이름을 설정해야 한다.커넥터는 프로듀서 역할을 하는 '소스 커넥터(Source Connector)'와 컨슈머 역할을 하는 '싱크 커넥터(Sink Connector)' 2가지로 나뉜.. 2024. 11. 1.
[Kafka] 아파치 카프카 기본 개념 :: 카프카 스트림즈 - 스트림즈DSL 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리 스트림즈 DSL에는 레코드의 흐름을 추상화한 3가지 개념인 KStream, KTable, GolbalKTable이 있다.이 3가지 개념은 컨슈머, 프로듀셔, 프로세서 API에서는 사용되지 않고 스트림즈DSL에서만 사용되는 개념이다.KStreamKStream은 레코드의 흐름을 표현한 것으로 메세지 키와 메세지 값으로 구성되어 있다.KStream으로 데이터를 조회하면 토픽에 존재하는(또는 KStream에 존재하는) 모든 레코드가 출력된다.KStream은 컨슈머로 토픽을 구독하는 것과 동일한 선상에서 사용하는 것이라고 볼 수 있다.KTableKTable은 KStream과 다르게 메세지 키를 기준으로 묶어서 사용한다.KStream은 토픽의 .. 2024. 10. 22.
[Kafka] 아파치 카프카 기본 개념 :: 카프카 스트림즈 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리카프카 스트림즈는 토픽에 적재된 데이터를 실시간으로 변환하여 다른 토픽에 적재하는 라이브러리다.카프카 스트림 데이터 처리를 위해 다양한 오픈소스 애플리케이션이 존재하지만, 스트림즈는 카프카에서 공식적으로 지원하는 라이브러리다. 자바 기반 스트림즈 애플리케이션은 카프카 클러스타와 완벽하게 호환되면서 스트림 처리에 필요한 편리한 기능들(신규 토픽 생성, 상태 저장, 데이터 조인 등)을 제공한다.보통의 빅데이터 처리에 필수적이라고 판단되었던 분산 시스템이나 스케줄링 프로그램들은 스트림즈를 운영하는 데에 불필요하다. 자바 라이브러리로 구현하는 스트림즈 애플리케이션은 JVM 위에서 하나의 프로세스로 실행되기 때문이다.스트림즈 애플리케이션은 내부.. 2024. 10. 8.
[Kafka] 아파치 카프카 기본개념 :: 클라이언트 라이브러리 - 어드민 API 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리카프카 클라이언트에서는 내부 옵션들을 설정하거나 조회하기 위해 AdminClient 클래스를 제공한다.AdminClient 클래스를 활용하면 클러스터의 옵션과 관련된 부분을 자동화할 수 있다.AdminClient 활용 예시- 카프카 컨슈머를 멀티 스레드로 생성할 때, 구독하는 토픽의 파티션 개수만큼 스레드를 생성하고 싶을 때, 스레드 생성 전에 해당 토픽의 파티션 개수를 어드민 API를 통해 가져올 수 있다.- AdminClient 클래스로 구현한 웹 대시보드를 통해 ACL(Access Control List)이 적용된 클러스터의 리소스 접근 권한 규칙을 추가할 수 있다.- 특정 토픽의 데이터 양이 늘어남을 감지하고 AdminClien.. 2024. 9. 27.
[Kafka] 아파치 카프카 기본 개념 :: 클라이언트 라이브러리 - 컨슈머 API 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리 컨슈머 API프로듀서가 전송한 데이터는 카프카 브로커에 적재된다. 컨슈머는 적재된 데이터를 사용하기 위해 브로커로부터 데이터를 가져와서 필요한 처리를 한다.IntelliJ로 프로젝트를 생성해 기본적인 애플리케이션을 만들어본다.카프카 클라이언트 디펜던시와 로그 확인을 위한 slf4j를 추가해준다.클라이언트 버전은 책의 버전과 같은 버전으로 하였다.implementation('org.apache.kafka:kafka-clients:2.5.0')implementation('org.slf4j:slf4j-simple:1.7.30')컨슈머 애플리케이션을 개발하기 위한 자바 파일을 생성한다.package com.example;import org... 2024. 9. 25.
[Kafka] 아파치 카프카 기본개념 :: 클라이언트 라이브러리 - 프로듀서 API 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리 프로듀서 API프로듀서 애플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 전송한다.프로듀서는 데이터를 직렬화하여 카프카 브로커로 보내기 때문에 자바에서 선언 가능한 모든 형태를 브로커로 전송할 수 있다.직렬화란 자바 또는 외부 시스템에서 사용 가능하도록 바이트 형태로 데이터를 변환하는 기술이다.직렬화를 사용하면 프로듀서는 자바 기본형과 참조형 뿐만 아니라 동영상, 이미지 같은 바이너리 데이터도 프로듀서를 통해 전송할 수 있다.먼저 IntelliJ를 실행하여 프로젝트를 생성하여 기본적인 프로듀서 애플리케이션을 만들어본다.카프카 클라이언트 디펜던시와 로그 확인을 위한 slf4j를 추가해준다.implementa.. 2024. 9. 23.
[Kafka] 아파치 카프카 기본 개념 아파치 카프카 애플리케이션 프로그래밍 with 자바 책 공부 내용 정리 카프카 브로커카프카 브로커는 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자, 데이터를 분산 저장하여 장애가 발생 하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션이다.카프라 클러스터로 묶인 브로커들은 프로듀서가 보낸 데이터를 안전하게 분산 저장하고 복제하는 역할을 수행한다.데이터 저장, 전송프로듀서로부터 데이터를 전달받으면카프카 브로커는 프로듀서가 요청한 토픽의 파티션에 데이터를 저장하고컨슈머가 데이터를 요청하면 파티션에 저장된 데이터를 전달한다.카프카는 페이지 캐시를 사용하여 디스크 입출력 속도를 높였다.페이지 캐시란 OS에서 파일 입출력의 성능 향상을 위해 만들어 놓은 메모리 영역이다.데이터 복제, 싱크카프카.. 2024. 9. 13.
[Kafka] 아파치 카프카 CLI 명령어 kafka-topics.sh카프카 토픽 생성--replication-factor 1로 설정할 경우 복제를 하지 않고 사용하겠단 의미이며, 2면 1개의 복제본을 생성한다.복제 수의 최소 설정은 1이고, 최대 설정은 카프카 클러스터의 브로커 수이다.bin/kafka-topics.sh \ --create \ --bootstrap-server 카프카브로커IP:포트 \ [--partitions 파티션수] \ [--replication-factor 복제수(1이면복제X)] \ [--config retention.ms=토픽데이터유지시간] \ --topic 토픽명 카프카 토픽 조회--exclude-internal 옵션 추가 시 내부 관리를 위한 인터널 토픽을 조회 목록에서 제외할 수 있다.bin/kafka-t.. 2024. 9. 5.