web/kafka
kafka cluster replica partition reassignment
kafka replica kafka는 내장애성을 위해 복제본을 만든다고 한다. 그래서 안정적인 고가용성을 유지하기 위해 일정 수준의 replica partition이 살아있지 않은 경우 ISR(In-Sync Replica)이 복구 될 때까지 데이터를 쓸 수가 없는 상태가 된다. 만약 replica partition이 있는 broker가 down 될 경우에 새로운 broker를 클러스터에 추가하게 되면 broker와 함께 죽어버린 replica partition이 자동으로 assign 되면서 생성될까? 확인 결과 그렇지 않다고 한다. 하둡이나 ES처럼 자동으로 새로운 노드, broker가 붙는다고 해서 auto assign을 하지 않는다고 한다. (엄청 불편하군) 그럼 실제로 broker가 죽었다고 생각하..
Kafka cluster에서 topic 지우기
카프카 토픽을 지우기 위해 kafka-topic command를 사용해서 시도했다. [root@f6ed7547e36f /]# kafka-topics --delete --zookeeper centos1:2181,centos2:2181,centos3:2181 --topic wedul Topic wedul is marked for deletion. Note: This will have no impact if delete.topic.enable is not set to true. for deletion을 위함 marked가 되었다는 내용가 delete.topic.enable을 true로 하지 않으면 실제 효과가 없다는 알림을 받았다. 이에 /etc/kafka/server.properties에 있는 delete...
Kafka Connect 정리
Kafka Connect - kafka에서 외부로 데이터로 출력을 하거나 kafka로 데이터를 입력하도록 도와주는 도구 - kafka connect는 kafka connect와 플러그인 형태로 되어 있으며 데이터를 producer를 통해 넣는 부분을 source라고 하고 consumer 쪽으로 보내는 곳을 sink라고 한다. - 공개된 플러그인이 있으며 sink, source 양쪽 모두 공개된 플러그인만 사용하는게 좋다. (신뢰도가 떨어지는 플러그인은 버그가..) - kafka connect는 브로커와 동일한 서버에서 동작할 수 있기 때문에 kafka 클러스터와 kafka connect 클러스터를 함께 구성도 가능 - kafka connect 클러스터에 source, sinke의 플러그인으로 데이터를 입..
docker에서 Kafka + zookeeper 클러스터 구성하기
설명 주키퍼와 브로커가 한 서버에 위치하는 구조의 클러스터를 구성해보자. Docker #network - docker container가 서로 통신할 수 있도록 bridge driver형태의 네크워크 생성 sudo docker network create mynetwork #centos docker container 생성 - 일반 centos 이미지를 사용할 경우 systemd command가 정상동작하지 않기 때문에 centos/systemd 이미지를 사용할 것 docker run --privileged -d --name centos1 --network mynetwork -P centos/systemd init docker run --privileged -d --name centos2 --network ..
[번역] shared message queues와 publish-subscribe 방식에 Custom Group 방식을 더한 Kafka 소개
전통적으로 메시지 모델은 Shared Message Queue, Publish-subscribe로 구분된다. 두 가지 모델 모두 그들만에 pros and cons를 보유하고 있다. 하지만 이 두개의 모두 최초 디자인 제한 때문에 큰 데이터를 다루기에는 부족했다. Apache Kafka는 두 모델 중 publish-subscribe 메시징 모델을 구현한 모델로 부족했던 부분을 수정하고 실시간 분석을 위한 스트리밍 데이터를 처리할 수 있도록 가능해졌다. kafka는 LinkedIn에서 2010년에 방대한 데이터 처리를 위해서 개발되었다. Apache Kafka는 전통적인 메시징 모델이 달성하지 못한 격차를 해소했다. Kafka는 두 모델의 개념을 구현하여 단점을 극복하고 동시에 두 가지 방법론을 모두 통합 ..
Kafka 요약 정리
Topic- 메시지는 Topic에 분류된다. Partition- Topic은 partition으로 구분된다.- 파티션에 쌓이는 데이터는 로그라고 부르고 각 파티션에 나눠서 저장된다. Topic이 파티션으로 나뉘는 이유- Topic 내부에 파티션이 없을경우 메시지를 보내는 대상이 많아질경우 append 속도가 버거워진다. - 병렬로 분산저장하고자 Partition 개념 생성- 한번 생성한 파티션은 운영중에 줄일 수 없기 때문에 설계시 조심 Consumer- Topic에 있는 데이터를 읽는 대상 Consumer Group- Consumer를 여러개 묶어놓은 것. Consumer Group이 필요한 이유.- 소비를 진행 하던 Consumer가 죽어버릴 경우를 Rebalance 상황이라고 하는데 이럴경우 파티션..
Kafka 정리
카프카는 분산형 스트리밍 플랫폼으로써 다음으로 정의할 수 있다. 메시지 큐와 유사하게 스트림을 publish하고 subscribe 하는 방식이다.fault-tolerant 지속 방식으로 레코드들의 스트림들을 저장한다. 용도 시스템이나 어플리케이션에서 발생한 실시간 스트리밍 데이터를 안정적으로 데이터 파이라인 구축할 때데이터 스트림을 전송하거나 처리해야할 때 사용 구성 하나이상에 서버에 여러 cluster로 구성되어 있다.topic이라는 카테고리로 레코드 스트림들을 저장한다.각각의 레코드들은 key, value, timestamp로 구성되어 있다. 핵심 APIProducer API하나 또는 그 이상의 카프카 topic을 데이터 스트림에 발행할 수 있도록 해주는 APIConsumer API어플리케이션이 하나..