카프카 (8) 썸네일형 리스트형 아파치 카프카 실습 (Apache Kafka) / 컨슈머 랙 - 상세 개념 # 컨슈머 랙 컨슈머 랙(LAG)은 토픽의 오프셋(LOG_END_OFFSET)과 컨슈머 오프셋(CURRENT_OFFSET)간의 차이다. 프로듀서는 계속해서 새로운 데이터를 파티션에 저장하고 컨슈머는 자신이 처리할 수 있는 만큼 데이터를 가져간다. 컨슈머 랙은 컨슈머가 정상 동작하는지 여부를 확인할 수 있기 때문에 컨슈머 애플리케이션을 운영한다면 필수적으로 모니터링 해야하는 지표이다. 컨슈머 랙은 컨슈머 그룹과 토픽, 파티션별로 생성된다. 1개의 토픽에 3개의 파티션이 있고 1개의 컨슈머 그룹이 토픽을 구독하여 데이터를 가져가면 컨슈머 랙은 총 3개가 된다. 프로듀서가 보내는 데이터양이 컨슈머의 데이터 처리량보다 크다면 컨슈머 랙은 늘어난다. 반대로 프로듀서가 보내는 양이 컨슈머의 데이터 처리량 보다 적으.. 아파치 카프카 실습 (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) / 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.. [Kafka 연결 오류] broker id, cluster id가 달라 연결에 실패하는 경우 카프카 실행 후 컨슈머로 데이터를 받아 보려는데 오류가 났다.[2022-12-19 21:00:52,642] WARN [Consumer clientId=consumer-console-consumer-64001-1, groupId=console-consumer-64001] Bootstrap broker my-kafka:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)[2022-12-19 21:00:53,880] WARN [Consumer clientId=consumer-console-consumer-64001-1, groupId=console-consumer-64001] Connection to node -1 (my-.. 아파치 카프카 실습 (Apache Kafka) / 데이터 주고 받기 프로듀서 (kafka-console-producer.sh) 생성된 토픽에 데이터를 넣을 수 있는 kafka-console-producer.sh 명령어로 데이터를 넣어보겠다. 토픽에 넣는 데이터는 레코드(record), 메시지 key와 value 값으로 이루어져 있다. 메시지 키 없이 메시지 값만 보내게 될 경우 자바의 null로 기본 설정되어 브로커로 전송된다. bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 \ > --topic test.kafka >hello >kafka >0 >1 >2 >3 >4 >5 kafka-console-producer.sh로 전송되는 레코드 값은 UTF-8을 기반으로 Byte변환되고 ByteArraySeriali.. 아파치 카프카 실습 (Apache Kafka) / 토픽 생성 및 조회 카프카 커맨드 라인 툴 카프카에서 제공하는 카프카 커맨드 라인 툴들은 카프카 운영 시 가장 많이 접하는 도구다. 이를 이용해 카프카 브로커 운영에 필요한 다양한 명령을 내릴 수 있다. 카프카 클라이언트 애플리케이션을 운영할 때는 클러스터와 연동하여 데이터를 주고 받는 것도 중요하지만 토픽이나 파티션 개수 변경과 같은 명령을 실행해야 하는 경우도 자주 발생한다. 그러므로 카프카 명령어를 손에 익히자 토픽 (kafka-topics.sh) 토픽이란 카프카에서 데이터를 구분하는 가장 기본적인 개념이다. 예를들어 RDBMS에서 사용하는 테이블과 유사하다고 볼 수 있다. 클러스터에 토픽은 여러 개 존재할 수 있다. 토픽 내 파티션은 최소 1개 이상이다. 파티션을 통해 한 번에 처리할 수 있는 데이터양을 늘릴 수 있.. 아파치 카프카 실습 (Apache Kafka) / EC2 서버 구축, 카프카, 주키퍼 설치하기 평소에 대용량 시스템이나 분산화 시스템 말만 많이 들어봤지, 현재 내가 속해있는 현업에서조차 경험하지 못해 고민하여 독학으로 진행하기로 했다. 평소에 아파치 카프카(Apache Kafka) 에 대하여 관심이 많았던 나여서 유튜브로 카프카에 대해 찾아보다가 데브원영님의 채널을 알게되고 그 이후로 채널 구독까지 하여 카프카에 대한 전반적인 영상을 보았다. 그러던 어느날 데브원영님께서 아파치 카프카 애플리케이션 프로그래밍 with 자바 라는 교재를 출판하셨고, 이소식을 들은 나는 '아! 이제 나도 진짜 공부를 시작해야겠다!' 라는 마음이 들어 책을 구입하였다. 카프카에 대한 전반적인 구조 및 예제 실습등을 포스팅 하며 복습할 예정이다. 개념 설명에 관한 포스팅은 내가 정확히 이해를 했을 때 포스팅을 할 예정이.. 이전 1 다음