Programming/Kafka 32

[zookeeper] zookeeper 실행시 session request 무한 루프

zookeeper 실행시 session request가 무한 루프 돌고 있다.. 아무리 다시 연결하려고 해도 아래와 같이 무한루프라면 zookeeper 중단시 강제종료(ctrl + c)를 실행하여 이전에 띄었던 zookeeper와 충돌할 경우 발생한 것으로 판단된다. ................ [2020-05-06 15:09:51,701] INFO Server environment:java.io.tmpdir=C:\Users\log\AppData\Local\Temp\ (org.apache.zookeeper.server.ZooKeeperServer) [2020-05-06 15:09:51,703] INFO Server environment:java.compiler= (org.apache.zookeeper...

Programming/Kafka 2020.05.06

[kafka] docker kafka image

도커 환경에서 카프카와 주키퍼 도커 환경에서 카프카와 주키퍼 구축시에 사용할 이미지를 먼저 선택해야한다. 도커 명령어를 통해 주키퍼와 카프카에 관련된 이미지를 검색한 결과, 주키퍼는 공식 이미지가 있지만, 카프카는 공식 이미지가 없음을 확인 할 수 있다. $docker search zookeeper $docker search kafka 카프카는 아쉽게도 공식적으로 지원하는 이미지가 없어, 비교적 사람들이 많이 언급하는 카프카 이미지들의 특징을 정리해보았다. 카프카 이미지 특징 1. dockerkafka/kafka Docker hub 바로가기 kafka외에도 zookeeper, kafka-manager 솔루션 제공 데이터 플랫폼 최강자 책 참고 가능. (2페이지정도 분량이긴 하지만..) 4년전에 업데이트 ..

Programming/Kafka 2020.04.29

[Kafka] 카프카 매니저 설치 Kafka-Manager install

카프카 클러스터의 모니터링하는 방법은 대표적으로 2가지가 있다. 첫번째는 JMX 사용하여 모니터링하는 방법이 있고, 두번째는 야후에서 공개한 오픈소스인 Kafka-Manager이다. 이번 글에서는 Kafka-Manager 설치하는 방법에 대해서 알아본다. 1. 카프카 매니저 다운로드 https://github.com/yahoo/CMAK/releases yahoo/CMAK CMAK is a tool for managing Apache Kafka clusters. Contribute to yahoo/CMAK development by creating an account on GitHub. github.com 3.X.X.X 버전은 JAVA 11부터 되는 것 같아서 안전하게 CMAK-1.3.3.23.tar 다운..

Programming/Kafka 2020.04.24

[kafka] 자주 사용하는카프카 명령어

카프카 사용시 자주 사용하는 명령어이다. 명령어 확인 경로: /usr/local/kafka/bin 토픽 생성 > bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic 토픽 리스트 확인 > bin/kafka-topics.sh --list --bootstrap-server localhost:9092 토픽 상세 보기 > bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test-topic 토픽 설정 변경 디스크 공간 확보시 필요. 운영 중 디스크 공간을 확보하는 가장 좋은..

Programming/Kafka 2020.04.23

[kafka] Consumer Connection Config

Consumer Connection Config bootstrap.servers Type: list Default: "" Valid Values: non-null string Importance: high 카프카 클러스터에 처음 연결을 하기 위한 호스트와 포트 정보로 구성된 리스트 정보. fetch.min.bytes Type: int Default: 1 Valid Values: [0,...] Importance: high 한번에 가져올 수 있는 최소 데이터 사이즈. 만약 지정된 사이즈 보다 작은 경우, 요청에 응답하지 않고 데이터가 누적될 때까지 기다림. group.id Type: string Default: null Valid Values: Importance: high 컨슈머가 속한 컨슈머 그룹을 식..

Programming/Kafka 2020.04.22

[Kafka] No jmx port but jmx polling enabled

에러 내용 kafka-manager 설치 후 topic 생성 중에 아래와 broker-0에는 에러가 안나는데 broker-1,2 에는 아래와 같은 에러가 발생하였다. > broker 1 Error [error] k.m.a.c.BrokerViewCacheActor - Failed to get broker metrics for BrokerIdentity(1,DESKTOP-5V2566P.localdomain,-1,false,true,Map(PLAINTEXT -> 9093)) java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled! at scala.Predef$.require(Predef.scala:22..

Programming/Kafka 2020.04.21

[kafka] Consumer 주요 기능

Consumer 주요기능 특정 파티션을 관리하고 있는 파티션 리더에게 메세지 가져오기를 요청하는 것 각 요청은 로그의 오프셋을 명시하고 그 위치로 부터 로그메시지 수신 그래서 Consumer는 가져온 메세지의 위치를 조정할 수 있고, 필요하다면 이미 가져온 데이터도 다시 가져오기 가능. 가져온 메시지를 다시 가져올 수 있는기능은 RabbitMQ와 같은 일반적인 메세지큐 솔루션에서는 제공하지 않음. (기존 다른 메세징큐 솔루션에선는 Consumer 가 메세지를 가져가면 큐에서 삭제되어 다른 Consumer 가 가져갈 수 없는 것과는 다른 방식임.) Consumer History Consumer 의 offset의 저장 위치에 따라 Old Consumer , New Consumer 로 나뉘어짐 Old Cons..

Programming/Kafka 2020.04.21

[kafka] 메시지 전송 케이스 별 프로듀서 옵션 설정

메시지 전송 케이스 별 프로듀서 옵션 설정 1. 메세지 손실 가능성이 높지만 빠른 전송이 필요한 경우 프로듀서의 acks=0 설정 일부 메시지 손실을 감안하더라도 매우 빠르게 전송이 필요한 경우. 메시지 손실이 발생한다고 해서 프로듀서가 보내는 메시지 90% 이상 손실된다는 의미는 아님 일반적인 운영 환경의 경우 메시지 손실 없이 빠르게 보내지만, 브로커가 다운되는 장애 등의 경우에 메시지 손실 가능성이 높은 편. 2. 메시지 손실 가능성이 적고 적당한 속도의 전송이 필요한 경우 1번 케이스와는 달리 프로듀서가 카프카로 메시지를 보낸 후 보낸 메시지에 대해 카프카가 잘 받았는지 확인(acks) 함. acks 받는 시간이 추가되어 시간이 속도는 떨어짐.(시간: 보내는 행동 + 응답을 받는 행동) 리더에 장..

Programming/Kafka 2020.04.20

[kafka] Producer Connection Config

Producer 주요 옵션 bootstrap.servers Type: list Default: "" Valid Values: non-null string Importance: high 카프카 클러스터는 마스터 개념이 없기 때문에 모든 서버가 클라이언트에게 요청받을 수 있음. 카프카 플러스터에 처음 연결하기 위한 호스트와 포트 정보로 구성된 리스트 정보 acks Type: string Default: 1 Valid Values: [all, -1, 0, 1] Importance: high 프로듀서가 카프카 토픽의 리더에게 메시지를 보낸 후 요청을 완료하기 전 ack(승인)의 수 해당 옵션의수가 작으면 성능은 좋아지만, 메시지 손실가능성이 있다. 옵션의 수가 커지면 성능이 좋지 않지만 손실 가능성이 줄어들거나..

Programming/Kafka 2020.04.19

[kafka] 고가용성 리플리케이션

카프카는 분산 시스템으로 서버의 물리적 장애가 발생하더라도 높은 가용성을 보장하기위해 리플리케이션 기능을 제공한다. 리플리케이션(복제)는 토픽 자체를 복제하는 것이 아닌 토픽을 이루는 Partition 자체를 복제하는 것을 의미한다. 1. 리플리케이션 팩터 (Replication Factor) 카프카는 Replication Factor 옵션으로 몇개를 복제할 것이지 설정 가능 기본값은 1 config/server/properties 파일에서 default.replication.factor 의 값을 수정 topic 마다 replication facotr 값을 줄 수 있음 운영중에도 변경 가능 클러스터내에 모든 broker 동일하게 설정 2. 리더(leader), 팔로워(follower) 리더는 모든 읽기 ..

Programming/Kafka 2020.04.15