목록카프카 (8)
without haste but without rest
아파치 카프카 애플리케이션 프로그래밍 with 자바 Kafka Connect 카프카에 기본적으로 포함되어 있는 애플리케이션이다. 프로듀서, 컨슈머 애플리케이션을 직접 개발할 필요없이 템플릿 기반으로 사용할 수 있다. source, sink에 대한 플러그인은 confluent hub에서 검색해서 찾을 수 있다. 1. 아키텍처에 대한 간단한 요약 유저가 커넥트에 커넥터 생성을 요청하면 커넥트는 내부에 커넥터와 태스크를 생성한다. 커넥터는 태스크를 관리하고, 태스크는 커넥터에 종속되는 개념으로, 데이터를 처리를 담당 한다. 유저는 Converter와 Transform 기능을 옵션으로 추가할 수 있다. 컨버터는 데이터 처리를 하기 전에 스키마를 변경하도록 돕는다. JsonConverter, StringConve..
아파치 카프카 애플리케이션 프로그래밍 with 자바 MirrorMaker2 서로 다른 두 개의 카프카 클러스터 간 토픽을 복제하는 애플리케이션이다. (카프카 binary 디렉토리 내에 mirrormaker를 확인할 수 있다.) 프로듀서, 컨슈머 단에서 미러링을 구현할 수도 있지만, 파티셔닝 정보가 변경되는 등의 로직을 직접 구현하는 것이 쉽지 않다. 미러메이커2는 토픽의 데이터를 복제하고 설정까지도 복제해서 파티션의 변화, 토픽 설정값의 변화도 동기화하는 기능을 제공한다. + 미러메이커1은 복제하기 전 데이터와 복제된 데이터의 파티션 정보가 달랐으며 복제하는 토픽이 달라지면 수정하기 위해 애플리케이션을 재시작해야 했다. 또한 exactly-once 를 보장하지 못했다.
Message Key 카프카 브로커에 메세지를 전송할 때 Topic, Key, Value 값을 보내게 된다. 이때 토픽과 밸류는 직관적이지만 키가 굳이 필요한 이유에 관해서 궁금했다. 왜 쓰는 걸까? Key는 메시지의 종류를 나타날 때 사용하고, 데이터의 처리 순서와 밀접한 관련이 있다. 동일한 키를 동일한 파티션으로 보내는 것이 주요한 목적이다. 간단한 예시로, 토픽의 파티션 개수가 2개 이상이 되는 순간 오프셋의 순서를 보장할 수가 없다. 따라서 트랜잭션 데이터의 순서가 뒤바뀔 수 있는 위험이 존재한다. 이때 레코드의 Primary와 같은 고유값을 키로 이용한다면 동일한 파티션으로만 전송하게 되므로 특정 파티션의 바틀넥 현상에 의해서 순서가 역전되는 문제를 회피할 수 있다. 예를 들어서 uuid가 0..
카프카 핵심 가이드 - 실시간 데이터와 스트림 프로세싱 아파치 카프카 애플리케이션 프로그래밍 with 자바 0. Kafka 카프카는 이벤트 기반 분산 스트리밍 플랫폼이다. 비슷한 서비스로 GCP의 Pub/Sub, AWS의 Kinesis 등이 있다. 1. Unified 카프카를 사용하면 파편화된 데이터 파이프라인을 중앙집중화된 심플한 아키텍처로 개선할 수 있다. (1). 복잡한 데이터 파이프라인 예시 이미지 원본 위 구조는 각각의 프로세스가 파편화되어있는 상태로 데이터 처리 프로세스가 추가되는 경우 점점 더 구조가 복잡해질 수 밖에 없다. (2). 중앙집중화된 데이터 파이프라인 예시 카프카를 사용하는 아키텍처는 카프카 브로커가 모든 프로세스의 매개자 역할을 하는데, 이 과정에서 아키텍처가 매우 단순해진다...
카프카는 성능 테스트를 기본적으로 제공하고 있다. 아래 과정으로 현재 구축한 카프카 클러스터의 성능이 어느정도 나오는지 확인할 수 있다. 해당 쉘 파일은 카프카를 설치한 하위 디렉토리 bin에 있다. 0. create topic 앞서 구축한 테스트용 카프카 클러스터의 브로커는 3대이므로 복제 개수는 3개이며 파티션도 3개로 토픽을 생성했다. (브로커 개수의 2배인 파티션 6개로 증가시켰을 때 근소하게 성능 향상이 있었다. 12개는 6개와 성능 차이가 없었다..이 부분은 더 자세히 파악하고 추가할 예정이다.) 토픽 이름은 간단하게 bmt로 설정 bin/kafka-topics.sh --create --bootstrap-server \ broker-server1:9092,broker-server2:9092,b..
OS: ubuntu 20.04 LTS kafka: 2.5.0 broker: 3대 각 서버에 카프카 설치를 한다. 카프카 2.6버전 이후부터 주키퍼가 빠졌는데, 해당 테스트에서는 주키퍼를 사용하는 2.5버전을 사용했다. 주키퍼 설정, 카프카 설정은 기본옵션을 사용했으며 각 서버에 동일하고, 포트 설정 정도만 변경해준다. 1. kafka install wget http://archive.apache.org/dist/kafka/2.5.0/kafka_2.13-2.5.0.tgz tar -zxvf kafka rm kafka_2.13-2.5.0.tgz 2. 주키퍼 설정 # 카프카 설치한 디렉토리 패스로 이동 vi config/zookeeper.properties 아래 설정이 주키퍼 기본 세팅 #zookeeper.pr..
0. 요약 confluent 사에서 제공하는 도커 컴포즈 파일을 이용해서 카프카 브로커를 빠르게 구축한다. 도커 및 도커 컴포즈를 사용할 줄 안다고 가정한다. 장점은 곧바로 카프카를 사용할 수 있다는 점이며 도커 컴포즈 파일 기반이기 때문에 포트 번호와 옵션 등을 쉽게 수정할 수 있다. 카프카 클러스터, ksqlDB, 컨트롤 센터, 쥬키퍼 등을 제공한다. 주의할 점은 개발 용도의 파일이라 프로덕션 목적을 금지하고 있다. (커뮤니티 버전이 따로 있긴한데, 해당 파일은 컨트롤 센터가 없다.) 1. cp-all-in-one 파일 다운로드 confluentinc/cp-all-in-one docker-compose.yml files for cp-all-in-one , cp-all-in-one-community, ..
참조 - https://analyticshut.com/kafka-producer-and-consumer-in-python/ Kafka Producers and Consumers in Python | Analyticshut After writing consumers, producers and topics in Java, we will do the same in Python with just 10% lines of code. analyticshut.com 0. 개요 데이터 파이프라인 구축 공부를 위해서 파이썬으로 카프카 프로듀서를 만들었다. 프로듀서를 만든 환경은 윈도우이며 파이참을 사용했다. 카프카 브로커 클러스터는 aws ec2에 구축한 상태이다. 윈도우가 프롬프트 라인에서 ssh를 제공하지만 권한 문제..