kafka 8

Kafka Streams 어플리케이션 초기화

Kafka Streams를 개발하다 보면 매번 데이터를 새로 받아서 땡길 수 없기 때문에 초기화를 해주어야 하는 케이스가 종종 발생한다. 그럴때 아래 명령어를 통해 초기화를 하면 된다. ./kafka-streams-application-reset.sh --bootstrap-servers {브로커IP:PORT} --application-id {streams-id} --input-topics {토픽명} Reset-offsets for input topics [streams.test.topic] Following input topics offsets will be reset to (for consumer group search-ncms-streams) Topic: streams.test.topic Partit..

Kafka 2023.01.10

카프카 스트림즈(Kafka Streams)

기존에 카프카를 이용한 데이터 파이프라인 작업으로는 Producer -> Kafka -> Consumer 형태의 프로젝트들을 많이 하였는데 이번에 신규 프로젝트를 진행하게 되면서 카프카 스트림즈(Kafka Streams)를 이용한 경험을 정리 해본다. 카프카 스트림즈란? 토픽에 적재된 데이터를 실시간으로 변환하여 다른 토픽에 적재하는 라이브러리이다. 카프카의 스트림 데이터를 처리하기 위해 아파치 스파크, 아파치 플링크 등 다양한 오픈소스 어플리케이션들이 존재하지만 카프카 스트림즈를 사용해야 하는 이유는 카프카에서 공식적으로 지원하는 라이브러이기 때문이다. 카프카 클러스터와 완벽하게 호환이 되면서 편리한 기능(신규 토픽 생성, 상태 저장, 데이터 조인 등)들을 제공해준다. 카프카 스트림즈의 구조와 사용 방..

Kafka 2022.12.14

Kafka Consumer 멀티 쓰레드로 간단하게?

Multi Processor or Thread? Consumer를 만들다 보면 성능의 문제에 도달하게 된다. Kafka의 성능은 매우매우 빠르지만 1대의 Consumer를 통해 데이터를 저장하는 성능에는 서버 스펙으로는 한계가 있기 때문이다. 물론, End Point(ES, RDB, MongoDB 등)의 성능에도 한계가 있어 어느 정도 성능이 나오면 그 이상은 힘들다. 보통 토픽의 파티션과 컨슈머의 갯수의 공식은 아래와 같다. 파티션 수 >= 컨슈머 수 최고의 성능을 위해서는 파티션 수와 컨슈머의 수를 맞춰주는게 제일 좋아 보인다. 그렇다면 파티션 수와 컨슈머의 수를 1:1로 맞추기 위해서는 어떻게 해야 할까? 보통 이런 경우에는 2가지 해결책이 있다. 1. Multi Processor형태로 Consum..

Kafka 2022.01.28

Consumer Lag - Grafana 셋팅

Grafana 설치 [root@hostname grafana]# mkdir /grafana [root@hostname grafana]# cd /grafana [root@hostname grafana]# wget https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm [root@hostname grafana]# sudo yum install grafana-7.5.7-1.x86_64.rpm grafana 시작 [root@hostname grafana]# systemctl start grafana-server http://IP:3000/ 접속 admin / admin ← 초기 계정 데이터 소스 설정( 엘라스틱 서치 ) 참고로 엘라스틱서치에서 burrow-..

Kafka 2022.01.27

Kafka Connect

Kafka Connect란? 기본적으로 Kafka는 Broker, Producer, Consumer로 구성이 되어있다. 여기에서 Broker는 카프카이며 Producer는 메세지를 생산하는 역할, Consumer는 메세지를 소비하는 역할을 담당하고 있다. 이 구성에서 Producer와 Consumer의 역할을 대체할 수 있도록 나온것이 Kafka Connect이다. 간단한 데이터 파이프라인을 만들 때에도 직접 Producer와 Consumer를 만들었지만 이 Kafka Connect를 이용하면 직접 만들 필요 없이 설정만 해주면 된다. SOURCE, SINK?? Source 저장소에서 데이터를 가져와 Kafka로 데이터를 “전달” Sink Kafka에서 데이터를 가져와 저장소로 “저장” Source와 S..

Kafka 2022.01.26

Apache Kafka

현재 회사에서 내가 속한 팀은 검색개발팀이며 검색엔진은 Solr와 ElasticSearch 이렇게 두 종류를 사용하고 있다. 현재 검색엔진에 색인 되는 도메인의 종류가 크게 4가지이상으로 나누어 진다. 각각의 서로 다른 End Point에서 각기 다른 형태로 데이터를 수집하고 있는데 작년의 우리팀의 미션은 데이터 파이프라인을 표준화 시키는 것이다. 데이터파이프라인 표준화를 위해 현재 아주 핫한 MQ(Message Queue)인 Apache Kafka를 도입하기로 하였다. 그래서 미리 공부를 좀 하는 시간을 가져보며 이 글은 “실전 아파치 카프카”를 참고하여 작성되었다. Apache Kafka란? 여러대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템이다. 메시지를 받고, 받은 메시지를 다른 ..

Kafka 2022.01.26