Programming (88) 썸네일형 리스트형 아파치 카프카 실습 (Apache Kafka) / 토픽과 파티션 - 상세 개념 (적정 파티션 개수, 메시지 키 사용 여부, 토픽 정리 정책, ISR) # 토픽과 파티션 토픽에 대해 잘 이해하고 설정을 잘하는 것이 카프카를 통한 데이터 활용도를 높이는 것이다. 여러가지 운영상 고려사항을 알아보자. 1. 적정 파티션 개수 토픽의 파티션 개수는 카프카의 성능과 관련이 있다. 그렇기에 운영함에 있어 적절한 파티션 개수를 설정하고 운영하는 것이 매우 중요하다. 토픽 최초 생성 시 파티션의 개수를 정하는 데에 고려해야 할 점은 3가지 있다. # 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 파티션의 개수가 많아지면 많아 질수록 1:1 매핑되는 컨슈머 개수가 늘어나기 때문에 파티션은 카프카의 병렬처리 핵심이다. 파티션 개수를 정할 때는 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는 것이 중요하다. # 데이터 처.. 아파치 카프카 실습 (Apache Kafka) / 카프카 커넥트 단일, 분산 모드 커넥트 1. 단일 모드 커넥트 단일 모드 커넥트를 실행하기 위해서는 단일 모드 커넥트를 참조하는 설정 파일인 connect-standalone.properties 파일을 수정해야 한다. 해당 파일은 카프카 바이너리 디렉토리의 config 디렉토리에 있다. # 커넥트와 연동할 카프카 클러스터의 호스트와 포트 설정 # 2개 이상일땐 콤마로 구분하여 설정 bootstrap.servers=my-kafka:9092 # 데이터를 카프카에 저장할 때나 가져올 때 변환할 때 사용 key.converter=org.apache.kafka.connect.json.JsonConverter value.converter=org.apache.kafka.connect.json.JsonConverter # 스키마 형태를 사용하고 싶지 않다.. 아파치 카프카 실습 (Apache Kafka) / 카프카 커넥트란 * 카프카 커넥트 카프카 오픈소스에 포함된 툴 중 하나로 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션이다. 반복적인 파이프라인 생서 작업이 있을 시 매번 프로듀서, 컨슈머 애플리케이션을 개발하고 배포, 운영하기 때문에 비효율적이기에 특정한 작업 형태를 템플릿으로 만들어놓은 커넥터를 사용하면 효율적으로 사용할 수 있다. # 프로듀서 역할을 하는 소스 커넥터(source connector) # 컨슈머 역할을 하는 싱크 커넥터(sink connector) # 태스크 사용자가 커넥트에 커넥터 생성 명령을 내리면 커넥트는 내부에 커넥터와 태스크를 생성한다. 커넥터는 태스크를 관리하고, 태스크는 커넥터에 종속되는 개념으로 실적적인 데이터 처리를 한다. 이에 데이터 처리를 .. 아파치 카프카 실습 (Apache Kafka) / 프로세서 API 활용하기 * 프로세서 API 프로세서 API는 스트림즈DSL보다 투박한 코드를 가지지만 토폴로지를 기준으로 데이터를 처리한다는 관점에서는 동일한 역할을 한다. 스트림즈DSL은 데이터 처리, 분기, 조인을 위한 다양한 메서드들을 제공하지만 추가적인 상세 로직의 구현이 필요하다면 프로세서 API를 활용할 수 있다. 프로세서 API에서는 스트림즈DSL에서 사용했던 KStream, KTable, GlobalKTable 개념이 없다는 점을 주의해야 한다. 문자열 5자리 이상 데이터 필터링 실습 스트림즈DSL에서는 filter() 메서드를 스트림 프로세서로 사용해서 구현할 수 있었지만 프로세스API에서 동일한 로직을 구현하기 위해서는 스트림 프로세서 역할을 하는 클래스를 생성해야 한다. 1. 필터링 역할을 위한 스트림 프로.. 아파치 카프카 실습 (Apache Kafka) / GlobalKTable과 KStream 조인하기 * 코파티셔닝되어 있지 않은 토픽을 조인해야 할 때 리파티셔닝을 수행한 이후에 코파티셔닝이 된 상태로 조인 처리 KTable로 사용하는 토픽을 GlobalKTable로 선언하여 사용 GlobalKTable 선언하여 실습해보기 1. 파티션 2개로 이루어진 address_v2 토픽 생성 (KStream으로 사용하는 order 토픽은 파티션이 3개이기 대문에 코파티셔닝 되지 않은 상태) $ bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 \ --partitions 2 \ --topic address_v2 Created topic address_v2. 2. 스트림 프로세싱을 위한 코드를 스트림즈DSL로 작성후 코드 실행 HTML 삽입 미리보기할 수 .. 아파치 카프카 실습 (Apache Kafka) / KTable과 KStream 조인하기 KTable과 KStream 조인하여 데이터 추출하기 KTable과 KStream을 조인할 때 중요한 것은 코파티셔닝 되어 있어야 한다. KTable로 사용할 토픽과 KStream으로 사용할 토픽을 생성할 때 동일한 파티션 개수, 파티셔닝을 사용하는 것이 중요하다. KTable로 사용할 토픽은 address이고, KStream으로 사용할 토픽은 order이다. 조인된 데이터를 저장할 토픽은 order_join 으로 생성한다. $ bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 \ > --partitions 3 \ > --topic address Created topic address. $ bin/kafka-topics.sh --create -.. 스트림즈DSL로 간단하게 데이터 주고받기 - 카프카스트림즈(KafkaStreams) with stream-filter 스트림즈DSL로 데이터 주고받기 - 카프카스트림즈(KafkaStreams) 1. 필터 없이 순수 데이터 프로듀스 후 컨슘 - 스트림즈 애플리케이션 Class 생성 후 실행 HTML 삽입 미리보기할 수 없는 소스 - stream_log 토픽 생성 $ kafka_2.12-2.5.0 % bin/kafka-topics.sh --create \ --bootstrap-server my-kafka:9092 \ --partitions 3 \ --topic stream_log WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to u.. PKIX path building failed 오류 해결 어느날 업무중 외부 API 연동이 끊겨 로그를 조회해보니 해당 오류가 발생하였다. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target원인은 외부기관 https:// 의 통신 시 인증서가 우리 서버에 신뢰하는 인증 기관 목록에 없다는 내용이다.바로 외부기관에 연락 해보니 인증서 갱신을 했다고 한다. 리눅스 서버로 연동 후 데이터를 받아오는 형식으로 리눅스(C.. 이전 1 ··· 6 7 8 9 10 11 다음