나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Big Data/Kafka 31

[Kafka] mirrorMaker v1 단점. v2는?

이 글은 Cloudera Blog의 다음글에서 대부분 가져왔으며 이해한 만큼 한글로 정리한 문서입니다. 개요필자는 Kafka들의 성격에 맞게 cluster를 분리하여 사용할 경우가 있었다. cluster를 분리하지만 일부 topic에 대해서는 분리된 cluster에 복제해서 데이터를 같이 사용해야 하는 요구사항이 있었다. 이럴 경우, MirrorMaker를 사용한다. MirrorMaker의 이름에서 유추할 수 있듯이 Mirroring 데이터를 복사해주는 역할이다. 그런데 MirrorMaker에 단점이 많이 존재해서 복제 용도로 쓰기에 부족한 부분들이 많았다. 그 단점을 개선하려는 시도가 있고 MirrorMaker v2 (이하 MMv2)로 개발이 진행 중이다. MMv2는 아직 release 되지 않았지만 ..

Big Data/Kafka 2019.07.18

[Kafka] Configurable SASL callback handler

최근에 Kafka 인증 기술에 대해서 하나씩 공부를 하고 있다. 가장 기본이 되는 SASL/PLAIN에 대해서 이전 블로그 글을 통해 소개한 바 있다. 이번 글은 Kafka 2.0 버전에 추가된 SASL callback 기능을 알아보고자 한다. SASL callback이 인증과 관련하여 중요하다고 생각되는 것은 SASL/PLAIN에서 접근을 허용하는 사용자 정보의 관리에 장점이 있어서이다. SASL/PLAIN에서 소개했듯이 Broker의 jaas 파일에 사용자 정보를 관리하게 되면 Kafka 운영에 불편한 점이 많다. 이번에 소개할 SASL callback 기능을 사용하면 인증 로직을 custom하게 추가할 수 있어 Kafka Cluster 운영 상황에 맞는 인증 서비스를 할 수 있다. KIP-86에 S..

Big Data/Kafka 2019.04.18

[Kafka] 파티션 이동

예전 블로그 글 - [Kafka] Topic의 Replica 분배 로직 분석을 통해 Kafka는 Topic을 만들 때 각 Broker에 Partition을 균일하게 분배한다고 설명한 적이 있다. 하지만 Kafka를 운영하면 각 Topic 별로 쌓이는 데이터 용량이 다르기 때문에 Broker별 디스트 사용량이 차이가 나게 된다. 필자도 회사 업무 중에 디스크 불균형이 발생하여 일부 Topic의 Partition을 디스크가 남은 Broker로 이동하는 작업을 진행하였다. 먼저 어떤 Topic들을 대상으로 이동하면 좋을지 선택해야 했다. 모니터링 metric을 수집하기 때문에, 수집된 metric으로 판단을 해도 좋다. 에를들면, kafka.server:type=BrokerTopicMetrics,name=By..

Big Data/Kafka 2019.04.12

[Kafka] 인증 - SASL/PLAIN

최근 Kafka 인증에 대해서 살펴보고 있는데, 인증에서 가장 기본이 되는 SASL/PLAIN에 대해서 정리해 보고자 한다. 블로그의 내용은 Kafka Document의 내용을 토대로 직접 실습해보고 정리한 내용이다. SASL/PLAIN 인증 방식은 가장 먼저 머리속에 떠오르는 id/password를 통한 인증이다. id/password로 인증을 할 때는, SSL 통신을 해야 plain text가 노출되지 않는다. Kafka에서는 SASL_SSL, SASL_PLAIN 2가지 타입이 있으며, Live 환경에서는 SASL_SSL으로 설정해서 SSL 통신을 하도록 추천하고 있다. SASL/PLAIN 인증을 하기 위해서는 인증정보를 포함한 conf 파일을 Broker, Client에 각각 만들어 줘야 한다. 먼..

Big Data/Kafka 2019.03.26

[Kafka] consumer group offset change by python.

Kafka consumer 관련 2번째 글이다. 지난 글에서 LAG에 대해서 설명했는데, consumer group과 offset에 대한 설명을 빼 놓고 지나가니 이해하는데 부족할 수 있어 consumer group에 대한 개념 설명을 하고자 한다. 그리고 추가로 consumer group의 offset을 변경하고자 할 때가 발생할 수 있는데 간단한 python 코드로 offset을 변경하는 방법을 알아보자. offset을 왜 변경하지? 라는 질문이 있을 수 있는데, consumer group에 대해서 이해하면 질문에 대한 답이 저절로 될 듯 하다. 1. consumer group 아래 그림이 consumer group을 이해할 수 있는 가장 좋은 그림이다. Kafka의 Topic은 여러 partitio..

Big Data/Kafka 2018.12.31

[Kafka] consumer LAG 수집 및 elasticsearch 적재

Kafka에 저장된 데이터를 consumer를 통해 처리를 하고 있을 때, 개발한 코드로 데이터가 잘 처리되고 있는 건지 궁금할 때가 있다. consumer의 데이터 처리 상황을 주기적으로 모니터링 한다면 처리하지 못하고 Kafka에 남아있는 데이터 수치를 알아야 한다. Kafka에 남아 있는 데이터 수의 증감을 통해 consumer의 throughput도 계산할 수 있다. Kafka 문서에 보면 consumer group의 현재 position을 얻는 command가 있다. 다음은 해당 command인 kafka-consumer-group.sh의 실행 예제이다. > bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --g..

Big Data/Kafka 2018.12.28

[Kafka] Topic의 Replica 분배 로직 분석

Kafka에서 topic을 생성할 때, partition 별로 replica를 어떻게 할당하나 찾아보았다. 여러개의 broker를 가진 Kafka Cluster를 운영할 경우 각 broekr 마다 replica 불균형이 발생한다. 최고 topic 생성 이후에 broker shutdown 등 다른 이유에 의해 replica가 바뀔 수 있겠지만 topic 생성 최초에 partition 별 replica 할당이 어떻게 되나 궁금했기 때문이다. 그래서 topic이 생성하는 코드 안쪽에서 partition 분배 로직을 뒤졌다. partition 분배 로직에는 broker의 rack 설정이 있는 것과 없는 것 2개의 로직이 존재했다. 이 글에서는 rack이 없는 설정에 대해서 먼저 분석해 본다. 다음은 partit..

Big Data/Kafka 2018.11.22
반응형