#Kafka #Streaming #DataEngineer
- 카카오 데이터 엔지니어(전: SK플래닛)
- 저서
- 아파치 카프카 애플리케이션 프로그래밍 with 자바
- 예스24: https://bit.ly/3uFmhpF
- 교보문고: https://bit.ly/39Pk0Ak
- 알라딘: https://bit.ly/3a3Xa7T
- 실시간 데이터 파이프라인 아키텍처
- 예스24: https://bit.ly/3JjY96j
- 교보문고: http://bit.ly/3WEcgGJ
- 알라딘: https://bit.ly/3Hcbwmz
- 아파치 카프카 애플리케이션 프로그래밍 with 자바
講義
受講レビュー
- 【Apache Kafkaアプリケーションプログラミング】コンセプトからコンシューマー、プロデューサー、コネクト、ストリームズまで!
- [デブウォニョン] Apache Kafka for beginners
- [デブウォニョン] Apache Kafka for beginners
- 【Apache Kafkaアプリケーションプログラミング】コンセプトからコンシューマー、プロデューサー、コネクト、ストリームズまで!
- [デブウォニョン] Apache Kafka for beginners
投稿
Q&A
카프카 클러스터에서 감당 가능한 파티션(레플리카) 수 문의
안녕하세요. 카프카 클러스터의 적합한 파티션 개수는 리소스(cpu, memory, network, disk 등) 상황에 따라 달라집니다. 그렇기 때문에 단순히 1브로커당 x개의 파티션이 할당 가능하다고 하는 것은 아주 대략적인 추세일 뿐 정답이 아닙니다. 알려주신 파티션 개수 총 18,000개인 경우에 대해서 적절한 컴퓨팅 리소스 상황이라면 1개의 클러스터에서도 충분히 운용가능한 정도라고 생각되어 집니다. 파티션이 지속해서 많아지는 경우 브로커 개수를 늘리는 방법으로 적절히 운용하실 수 있을 거라 생각됩니다만, 상황에 따라 클러스터를 새로 만들어 운용하는 것도 나쁘지 않은 방법이라고 생각됩니다.감사합니다.
- 0
- 2
- 27
Q&A
reset offset 질문
안녕하세요. 특정 파티션 1개에 대해서만 오프셋을 reset하시려면 다음과 같이 실행하시면 됩니다.// 대상 토픽 : test // 컨슈머 그룹 : my-group // 대상 파티션 : 3 $ bin/kafka-consumer-groups.sh \ --bootstrap-server localhost:9092 \ --group my-group \ --topic test:3 \ --reset-offsets \ --to-earliest \ --execute
- 0
- 2
- 18
Q&A
KStreamJoinKTable 실행시 오류
안녕하세요.보내주신 로그에 따르면 정확한 원인을 찾기 어렵습니다.사용된 자바 코드build.gradle로그 전체실행시 사용한 JDK 버전을 공유해주시면 다시 한번 확인 후 답변드리겠습니다~
- 0
- 2
- 24
Q&A
auto.commit.interval.ms 옵션 관련 질문 드립니다.
안녕하세요, auto.commit.interval.ms 를 지정한다는 뜻은 auto commit을 수행한다는 뜻이며, 어떠한 사유로 인해 서버가 부득이하게 종료되는 경우에는 커밋 누락으로 중복 처리 문제가 발생할 수 있습니다.
- 0
- 2
- 63
Q&A
파티션, 컨슈머 그룹, 컨슈머 관련 질문
안녕하세요~ 답변드리겠습니다 1-1. 하나의 파티션은 컨슈머 그룹에 묶인 컨슈머에 대해서 여러개가 할당될 수 없습니다. 즉, '동일 컨슈머 그룹' 일 경우에 대해서 할당이 안되는 것이 맞습니다. 서로 다른 컨슈머 그룹에 대해서는 별개로 동작합니다! 1-2. 컨슈머 그룹별로 파티션별로 다른 commit이 완료된 오프셋을 가집니다. 예를 들어 파티션이 3개인 토픽에 hdfs-group과 elasticsearch-group 이라는 각각의 컨슈머 그룹이 붙어 데이터를 처리한다고 했을 때, hdfs-group은 각 파티션에 해당하는 커밋된 오프셋이 3개 존재하고 elasticsearch-group에도 마찬가지로 각 파티션에 해당하는 커밋되 오프셋이 3개 존재할 수 있습니다. 서로 다른 컨슈머 그룹의 오프셋은 영향을 미치지 않는다는점 참고부탁드립니다. 2.하나의 컨슈머가 여러 토픽을 구독하는 경우는 실무 기준으로 흔하지는 않은것 같습니다. 스키마가 비슷하고 동시에 처리되어야 할 경우와 같이 특수한 경우에 여러 토픽을 구독할 상황이 있을 수는 있습니다.감사합니다!
- 0
- 1
- 60
Q&A
java, kotlin
안녕하세요!강의에서 나온 주요 개념은 kafka-clients 공식 아파치 라이브러리 기준입니다. 이 라이브러리는 java로 작성되어 있기 때문에 kotlin에서도 동일하게 사용가능합니다! 감사합니다.
- 0
- 2
- 73
Q&A
shutdownThread 에 대한 문의 입니다.
안녕하세요. 컨슈머의 shutdownThread는 컨슈머의 안전한 종료를 위해 명시적으로 종료 시그널을 보내고 컨슈머를 종료(close()) 시키는 것에 의의가 있습니다. 컨슈머에 장애가 발생하여 running 중인 애플리케이션이 shutdownThread럴 거치지 않고 죽는다면 데이터의 유실 또는 중복이 발생할 수 있습니다. 이 경우 장애에 대비한 대응책은 별도로 로직으로 개발하셔야 합니다.해당 강의에서는 컨슈머 그룹과 관계없이 컨슈머에 대한 종료에 대한 실습을 진행했습니다. 그래서 kill 이후에 wakeup()을 통해 안전하게 종료되는 것을 보실 수 있습니다.그리고 컨슈머그룹을 여러 인스턴스(분리된 pod)로 운영하실 때 문제 발생시 리밸런싱에 대한 로직 개발은 섹션7에 리밸런싱 부분을 참고해주시면 좋겠습니다!
- 0
- 2
- 92
Q&A
zookeeper실행시 오류가 발생합니다.
안녕하세요 해당 에러는 kafka 바이너리가 관련 소스코드를 찾지 못해서 생기는 현상인것 같습니다.(사진)카프카 다운로드 페이지에서 Binary downloads에서 tgz 파일을 다운로드 받아서 다시 해보시겠어요?
- 0
- 2
- 145
Q&A
커스텀 소스 커넥터에서 Thread.sleep (1000) 은 왜 하는거에요?
안녕하세요. 해당 소스코드에서 Thread.sleep(1000)은 단순히 running 환경 동작 확인을 위한 코드입니다. 로직상 없어도 되는 부분이니 참고부탁드립니다.
- 0
- 2
- 81
Q&A
처리량을 늘리기 위해서 파티션을 늘리고 컨슈머를 늘려야한다고 설명하셨는데요
안녕하세요. 일반적으로 리소스의 관리 차원에서 1개 컨슈머 애플리케이션이 n개 컨슈머 스레드를 돌리는 것은 특별한 경우가 아닌 이상 하지 않습니다. 1개 컨슈머 애플리케이션에 1개 컨슈머 스레드를 돌리고, 해당 애플리케이션이 실행되는 pod를 여러개 운영(replica:5 와 같이)하는 것이 실무에서 가장 많이 사용되는 방식이라고 보면 좋을 것 같습니다다만, 앞서 말씀드렸다시피 k8s와 같이 애플리케이션의 증설(scale out)이 쉬운 상황이라면 이 방법이 일반적이겠으나, 물리장비 운영과 같이 deploy가 쉽지 않고 제한된 환경에서는 1개 서버에 여러개의 컨슈머를 운영하는 것도 방법입니다.
- 0
- 3
- 113