본문 바로가기
반응형

카프카8

인텔리J(InteliJ)에서 스칼라(Scala) 설정하기 아파치 카프카(Apache Kafka)의 소스코드를 분석하다가 브로커 서버 코드가 스칼라(Scala)라는 언어로 구성되어 있는 것을 알게되었다. 스칼라로 짜여진 부분에서 자바 클래스를 가져다 쓰고 있고, 그 부분을 고려한 코드들이 자바 소스코드에 남아있어서 어쩔 수 없이 스칼라 코드를 봐야했다. 하지만 내 맥북에 설치되어 있는 인텔리제이에는 스칼라 설정이 되어 있지 않았고 스칼라 코드는 그냥 평범한 텍스트 파일에 불과했다. 메소드 호출이나 클래스 등을 따라갈 수 있는 IDE의 기능을 사용할 수 없어서 코드 분석이 매우 어려웠다. 그래서 IntelliJ에서 스칼라 코드를 잘 볼 수 있도록 설정을 변경해봤다. 스칼라(Scala) 설치하기스칼라는 JVM 위에서 동작하는 프로그래밍 언어로 자바(Java)가 미리.. 2019. 2. 4.
[Kafka] #7 아파치 카프카 컨슈머(Kafka Consumer) 자바(Java)예제 코드 카프카 컨슈머 그룹과 컨슈머의 동작 방식에 대해서 알아봤다. 이제 자바를 이용해서 카프카 데이터를 읽어가는 예제 프로그램을 작성해보겠다. [Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart[Kafka] #3 - 아파치 카프카 프로듀서 (Apache Kafka Producer) 실행과 간단한 설정 예제(Configuration Example)[Kafka] #6 아파치 카프카 컨슈머와 컨슈머 그룹(Apache Kafka Consumer & Consumer Group) 이전 포스트에서 다뤘던 내용을 바탕으로 카프카 서버를 구동하고, "test"라는 이름의 토픽을 준비해보자. 카프카 컨슈머 예제"test" 토픽에서 메시지를 소비하는 가장 간단한 샘플 코드는 다음과 .. 2019. 2. 2.
[Kafka] #6 아파치 카프카 컨슈머와 컨슈머 그룹(Apache Kafka Consumer & Consumer Group) 카프카로 데이터를 전송하는 프로듀서와 다르게 카프카에서 데이터를 읽어가는 컨슈머는 컨슈머 그룹이라는 개념에 대해서 먼저 알아야 할 필요가 있다. [Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? 이전 포스트에서 간략하게 컨슈머의 메시지 읽기 동작에 대해 언급했었다. 이번 포스트에서는 좀 더 자세히 설명하여 카프카 컨슈머의 동작 방식에 대해서 확실하게 이해하고 넘어가도록 하겠다. 컨슈머 그룹(Consumer Group)카프카 프로듀서가 전송한 메시지는 토픽의 파티션에 나눠서 저장된다. 파티션에 저장된 이 메시지들은 컨슈머(Consumer)들에 의해 읽혀진다. 하나 이상의 카프카 컨슈머들은 컨슈머 그룹(Consumer Group)을 형성한다. 컨슈머가 특정 파티션의 데이터 소비를 위.. 2019. 1. 30.
[Kafka] #5 - 아파치 카프카 프로듀서(Apache Kafka Producer Partitioner) 설정 값 카프카 프로듀서를 생성할 때 프로퍼티를 명시한다. 이전에 봤던 "bootstrap.servers"와 "key.serialized", "value.serializer"를 비롯한 설정가능한 다른 프로퍼티들도 많이 있다. 이번 포스트에서는 카프카 프로듀서에 설정가능한 프로퍼티들을 알아보겠다. bootstrap.servers카프카 프로듀서가 최초로 접속할 때 필요한 주소들이다. 모든 카프카 클러스터를 입력할 필요는 없지만 두 개 이상 입력하기를 권장한다. 입력한 브로커 주소 중 하나라도 가용 상태면 프로듀서의 동작에 문제는 없다. key.serializer카프카 메시지의 키(key)를 바이트 배열로 만들어 줄 클래스를 명시한다. org.apache.kafka.common.serialization 인터페이스를 구.. 2019. 1. 10.
[Kafka] #4 - 아파치 카프카 프로듀서(Apache Kafka Producer Partitioner) 파티셔너 카프카 프로듀서에서 생각해봐야 할 프로퍼티 중 하나로 파티셔너(Partitioner)다. 파티셔너는 카프카 프로듀서로 메시지를 전송 할 때 토픽의 어떤 파티션으로 전송해야 할지를 결정해주는 클래스다. 카프카의 생성자에 넘겨주는 인자 중 하나인 Properties 객체에 "partitioner.class"라는 이름의 프로퍼티로 설정하면 된다. 별도로 설정하지 않으면 kafka.producer.DefaultPartitioner 클래스가 할당된다. 아파치 카프카 프로듀서의 파티셔너(Partitioner)파티셔너로 사용할 수 있는 클래스는 org.apache.kafka.client.producer.Partitioner 인터페이스를 구현해야 한다. Partitioner 인터페이스는 다음과 같다. public in.. 2019. 1. 9.
[Kafka] #3 - 아파치 카프카 프로듀서 (Apache Kafka Producer) 실행과 간단한 설정 예제(Configuration Example) 카프카에 대한 간단한 개념과 카프카 서버 구동 방법에 대해서 간략하게 알아봤다. [Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? [Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 이전 글에서는 콘솔에서 메시지를 전송하고 읽을 수 있는 콘솔 프로듀서와 콘솔 컨슈머를 사용해봤다. 이제 자바(Java)를 이용해서 카프카에 메시지를 전송할 수 있는 프로듀서를 구현해 볼 차례다. 카프카는 자바를 위한 프로듀서 클라이언트 라이브러리를 지원한다. 카프카 라이브러리를 사용하기 위한 메이븐(Maven) Dependency는 다음과 같다. org.apache.kafka kafka-clients 2.0.0 메이븐 pom.xml 파일에 추가하고 관련 .. 2019. 1. 7.
[Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 아파치 카프카의 웹 페이지를 보면 카프카를 처음 접하는 사람들도 쉽게 써볼 수 있는 "퀵 스타트(Quick Start)" 항목이 있다. 다운로드부터 간단한 실행까지 쉽게 따라할 수 있는 예제들이 정리되어 있다. 1. 다운로드카프카 다운로드 페이지에서 카프카 릴리즈 패키지를 다운로드 할 수 있다. 참고로 카프카 아카이브에서 이전 버전을 포함한 다양한 버전의 카프카 릴리즈 패키지를 내려받을 수 있다. 적당한 패키지를 다운로드하고 압축을 풀어준다. 12$ tar -xzf kafka_2.11-2.1.0.tgz$ cd kafka_2.11-2.1.0​cs 2. 서버 시작압축을 풀어내면 카프카를 위한 다양한 바이너리들과 설정 파일들이 들어있다. 카프카는 주키퍼를 사용해 내부 클러스터 멤버십 관리를 한다. 따라서 카프.. 2018. 12. 19.
[Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? 데이터 파이프라인(Data Pipeline)을 구축할 때 가장 많이 고려되는 시스템 중 하나가 '카프카(Kafka)' 일 것이다. 아파치 카프카(Apache Kafka)는 링크드인(LinkedIn)에서 처음 개발된 분산 메시징 시스템이다. 2011년 오픈소스로 공개되었으며 이후 2012년 10월 아파치 인큐베이터를 종료했다. 현재 링크드인에서 카프카를 개발하던 제이 크렙스(Jay Kreps)를 비롯한 일부 엔지니어들이 'Confluent'라는 회사를 설립하여 카프카와 관련된 일을 하고 있다. 카프카라는 이름은 유명한 작가인 '프란츠 카프카(Franz Kafka)'에서 따왔다. (참조 : Quora) I thought that since Kafka was a system optimized for writi.. 2018. 12. 18.
반응형