카프카 29

'아파치 카프카 입문' 5시간 기술 강의 회고, 느낀점, 아쉬운점 정리. 기술강의를 준비하는 분들이 봐야할 글.

지난 6월 19일(금) SK플래닛 T아카데미(서울대연구공원 단지 내 SK연구동)에서 '아파치 카프카 입문과 활용'이라는 제목으로 카프카강의를 수행하였습니다. 총 강의 시간은 5시간으로서 오후 1시부터 시작하여 오후 6시에 끝나는 꽤나 긴 시간의 강의였습니다. 오늘 포스트에서는 제가 기술 강의를 수행하기 위해 어떤 준비를 했는지, 어떤 과정을 거치고 어려운점은 무엇이었는지, 마지막으로 느낀점에 대해서 정리하겠습니다. 강의를 제안받다 제가 초청받은 강의는 토크ON세미나입니다. SK플래닛 T아카데미에서 주최하는 이 세미나는 ICT분야의 커리어 설계를 준비하는 대학생을 위한 Interactive세미나로서, 다양한 ICT주제로 매달 세미나를 열고 있습니다. SK플래닛의 사내/외 전문가를 초청하여 세미나를 열고 있..

개발이야기 2020.06.29
Kafka-client client.dns.lookup 옵션 정리

Kafka-client 2.1.0 이후 버젼에서는 client.dns.lookup옵션을 사용하여 dns관련 설정을 사용할 수 있습니다. 오늘 포스팅에서는 해당 옵션이 어떤 역할을 하고 어떻게 동작하는지 알아보도록 하겠습니다. 먼저, apache kafka document의 설명을 보도록 하겠습니다. client.dns.lookup document client.dns.lookup: Controls how the client uses DNS lookups. If set to use_all_dns_ips then, when the lookup returns multiple IP addresses for a hostname, they will all be attempted to connect to before ..

빅데이터/Kafka 2020.04.13
카프카 클러스터 클러스터ip DNS 연동방법. use_all_dns_ips 사용(in AWS, route53)

Kafka-client(consumer, producer)를 사용하기 위해서는 다양한 설정이 필요하지만 카프카 브로커와 통신하기 위해서는 bootstrap.servers 옵션은 반드시 필요한 옵션중 하나입니다. Bootstrap.servers 이 옵션은 카프카 클러스터에 연결하기 위해 클라이언트가 사용하는 브로커들의 host:port 목록을 설정해야 합니다. 특이한점은 모든 브로커의 host와 port를 적지 않아도 된다는 점입니다. 왜냐면 최초로 연결된 하나의 broker의 host:port로 부터 통신을 위한 정보를 가져오기 때문입니다. Route 53에서 kafka cluster DNS 설정하기 route53은 aws에서 제공하는 DNS 웹서비스 입니다. aws route53에 이미 등록되어 있는 ..

빅데이터/Kafka 2020.03.20
AWS에 카프카 클러스터 설치하기(ec2, 3 brokers)

보통 테스트할때 맥북 또는 윈도우 컴퓨터의 1대 장비에 설치하곤하는데요. 고 가용성 테스트를 하기 위해서는 반드시 3대 이상의 클러스터를 설치해야 완벽한 카프카클러스터로서 테스트가 가능합니다. 또한 테스트가 아니더라도 운영을 위해 ec2에 설치하는 경우도 있습니다. 이번 포스트에서는 AWS에 카프카 클러스터(3대)를 설치해보겠습니다. 실행 목차 aws에 카프카 클러스터(3대)를 설치하기 위해서는 아래와 같은 단계가 필요합니다. 1) AWS로 EC2 3대 발급 2) 방화벽 설정 및 /etc/hosts 설정 3) Zookeeper 설치 4) Kafka 설치 위와 같은 단계를 통해 클러스터를 구축해보고 local 컴퓨터에서 console producer와 consumer를 통해 클러스터가 정상동작하는지 테스트..

빅데이터/Kafka 2020.03.18
카프카 auto.offset.reset 종류 및 사용방법

카프카에서 consumer를 새로 생성하여 topic에서부터 데이터를 가져오기 위해서는 여러 옵션이 필요한데 그 중 하나는 auto.offset.reset입니다다. 이 auto.offset.reset의 역할에 대해 알아보겠습니다. 아래 글은 Kafka-client, Kafka broker 2.4 기준으로 작성하였습니다. auto.offset.reset auto.offset.reset에서 offset은 consumer offset입니다. 만약 이번에 topic에 붙은 consumer의 offset정보가 존재하지 않는다면 auto.offset.reset의 default값(latest)이나 또는 설정한 값을 따라가게 됩니다. auto.offset.reset - latest : 가장 마지막 offset부터 - ..

빅데이터/Kafka 2020.02.06
Kafka | MirrorMaker2 가 release되었습니다.

MirrorMaker 2.0은 KIP-382로 등록되어 있던 주제였으며, 2018년 10월 12일에 최초로 jira(KAFKA-7500)가 생성되었습니다. release될 때까지 약 1년이 걸렸는데요. 이번 포스팅에서는 MirrorMaker2.0이 왜 나왔고, 어떤 기능을 포함하고 있는지 살펴보겠습니다. 개발동기 MirrorMaker1은 꽤 오랜기간 사용되어 왔지만 몇가지 이슈가 있었습니다. Legacy MirrorMaker1의 문제점: - Topic들이 kafka default configuration기준으로 생성되었기 때문에 repartition하기 위해 재작업이 필요함 - ACL, configuration의 변경이 source/sink cluster사이에 sync되지 않음 - Record들은 Def..

빅데이터/Kafka 2019.12.18
Udacity 데이터 스트리밍 강의정리 - Faust python module 소개

# Python Streams ٩(◕‿◕)۶ # Forever scalable event processing & in-memory durable K/V store; # w/ asyncio & static typing. import faust Faust는 python의 stream processing library이다. kafka stream의 python버젼이라고 볼수 있습니다. Faust는 stream processing과 event processing 둘다 지원합니다. DSL언어를 사용하지 않고 pytthon library로서 동작합니다. 그렇기 때문에 Flask, NumPy, PyTorch 등과 함께 사용 할 수 있습니다. - Faust url : https://faust.readthedocs.io..

개발이야기 2019.11.21
Udacity 데이터 스트리밍 강의정리 - 데이터 스트리밍 기초

데이터 스트리밍 이론 목차 - Strategies for Application Design - Combining Streams - Filtering Streams - Remapping Streams - Aggregating Streams - Handling Time and Windowing - Streams vs Tables 들어가기 전에 -Join (Streams) 1개 이상의 output stream의 조합. 보통 연관된 key로 조합하는 것 -Filtering (Streams) 데이터 스트림에서 일정 조건에 따라 데이터를 제거하는것 -Aggregating (Streams) 데이터 스트림에서 더하거나 빼거나 key를 기반으로 group을 만드는 것 -Remapping (Streams) 데이터 스트림에..

개발이야기 2019.11.20
Udacity 데이터 스트리밍 강의 후기- Apache Kafka

Udacity의 Data streaming Nanodegree program을 듣고 난 후기를 공유하고자 합니다. Nanodegree program은 udacity의 certification program입니다.다. 강의를 모두 수강하고 난 뒤에는 Nanodegree(나노디그리) 라고 하는 학위는 아니고 증명서를 발급받을 수 있습니다. 이번에 들은 강의는 Udacity의 데이터스트리밍 강의입니다. 기본적으로 2달의 수강기간을 예상치로 잡고 있으며 Python, SQL, ETL에 대한 기본적인 개념을 가지고 있어야만 수강하는데 문제가 없다고합니다. 가격은 1달에 한화 약 47만원입니다.(2달에 약 80만원) 데이터 스트리밍은 현대의 빅데이터 비즈니스모델을 실시간으로 분석하고 처리하기 위해 사용됩니다. 이 ..

개발이야기 2019.11.18
카프카를 쿠버네티스 위에 올리는게 좋은 선택일까?

아래 포스트는 confluent 블로그 글을 토대로 제 의견과 함께 정리한 글입니다. 위 블로그글은 Gwen Shapira(하둡 애플리케이션 아키텍처, 카프카핵심가이드 저자이자 confluent PM)이 작성한 글입니다. 쿠버네티스위에 카프카를 올려야하나? 쿠버네티스를 사용하는 주요 이유 2가지는 아래와 같습니다. - 개발자와 운영자 모두에게 workflow의 효율을 높임으로서 생산성이 높아짐 - "bin packing(1개 가상/물리 장비에서 여러 application을 돌리는 것)"을 통해 리소스 관리 효율화 가능 그런데, 카프카는 운영하기 그렇게 어렵지 않으며, 가끔 node(가상/물리 장비)의 모든 resource를 필요할때가 있습니다. 그렇기 때문에 쿠버네티스 위에서 카프카를 운영하는 것은 그닥..

빅데이터/Kafka 2019.11.07
아파치 카프카 Lag 모니터링 대시보드 만들기

kafka-lag-dashboard Kafka lag을 모니터링하는 확실한 방법 Kafka Consumer의 처리시간이 지연되면 topic 내부의 partition lag이 증가합니다. lag 모니터링을 통해 어느 partition이 lag이 증가하고 있는지, 어느 컨슈머가 문제가 있는지 확인하기 위해서는 consumer단위의 metric 모니터링으로는 해결하기 쉽지 않습니다. 그렇기 때문에 카프카 컨슈머 모니터링을 위해서는 burrow와 같은 외부 모니터링 tool 사용을 권장합니다. 이 문서에서는 Linkedin에서 제공한 burrow를 사용하여 lag정보를 Elasticsearch로 수집하는 데이터파이프라인을 만들어보고, Grafana 기반의 consumer단위 lag 모니터링 대시보드를 만드는 방..

빅데이터/Kafka 2019.11.01
Kafka client 2.0 부터 KafkaConsumer.poll(long)은 deprecated됩니다.

Kafka client 2.0부터는 KafkaConsumer.poll(long timoutMs)는 deprecated되었다. KafkaConsumer.poll(long timeoutMs)를 기존처럼 long type parameter로 사용할 경우 poll(Duration timout)으로 redirect된다. 이 수정사항은 KIP-266에 의해서 수정되었고 수정된 사유를 아래와 같이 적어보고자 한다. KafkaConsumer.poll(long) poll method는 consumer에서 빠트릴 수 없는 중요한 메서드이다. 데이터를 가져오는 역할을 하며 무한루프안에서 지속적으로 호출되어 topic으로부터 데이터를 가져오는데 사용된다. 기존에 사용되던 poll() method는 long type 파라미터로..

빅데이터/Kafka 2019.10.22
KSQL 소개 ppt

KSQL - 효과적이고 간편한 스트리밍 프로세스 SQL엔진 from Won young Choi KSQL은 스트리밍 application을 SQL 쿼리를 사용하여 만들 수 있습니다. KSQL에 대한 전반적인 내용을 슬라이드에 담아보았습니다. - Kafka environment - KSQL Examples - KSQL and stream - KSQL format - KSQL data types - KSQL architecture - KSQL 하위호환성 - Custom KSQL(UDF, UDAF) - Who need KSQL - KSQL License

빅데이터/Kafka 2019.10.16
KSQL에러 extraneous input 'properties' expecting

KSQL에서 stream을 생성하다가 아래와 같은 오류를 만났다. line 3:3: extraneous input 'properties' expecting {'INTEGER', 'DATE', 'TIME', 'TIMESTAMP', 'INTERVAL', 'YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'ZONE', 'PARTITION', 'STRUCT', 'EXPLAIN', 'ANALYZE', 'TYPE', 'SHOW', 'TABLES', 'COLUMNS', 'COLUMN', 'PARTITIONS', 'FUNCTIONS', 'FUNCTION', 'ARRAY', 'MAP', 'SET', 'RESET', 'SESSION', 'IF', IDENTIFIER, DIGIT_..

빅데이터/Kafka 2019.10.16
링크드인에서 사용중인 커스텀 Kafka 공개

아래 포스트는 엔지니어 블로그를 번역하였습니다. 2019년 10월 8일 Linkedin이 엔지니어 블로그를 통해 내부에서 사용중인 kakfa를 공개하였다. blog : https://engineering.linkedin.com/blog/2019/apache-kafka-trillion-messages github : https://github.com/linkedin/kafka 아파치 카프카는 링크드인의 인프라에서 중요한 부분을 차지한다. 아파치 카프카는 처음에 in-house 스트림 프로세싱 플랫폼으로 개발하다가 오픈소스로 공개하였고 오늘날에는 많은 적용사례들이 있다. 아파치 카프카는 activity tracking, message exchange, metric gathering과 같은 역할을 하는 소프트..

빅데이터/Kafka 2019.10.15
Kafka의 KSQL 컨셉, 아키텍쳐, 용어, 커스텀 function 적용하는 방법

KSQL은 스트리밍 application을 SQL 쿼리를 사용하여 만들 수 있다. KSQL은 Kafka stream으로 만들어져 있다. KSQL은 Kafka 클러스터와 연동되는데 이는 기본적인 Kafka stream application동작구조와 동일하다. KSQL 아키텍쳐와 주변 application들 KSQL은 아래와 같은 구성요소로 이루어져 있다. KSQL 아키텍쳐 - KSQL 엔진 : KSQL 쿼리가 실행되고 있는 곳 - REST 인터페이스 : ksql 엔진에 client로 access할 수 있는 인터페이스 주변 application - KSQL CLI : KSQL 엔진에 CLI(Command Line Interface)로 접속할 수 있게 도와주는 application - KSQL UI : Con..

빅데이터/Kafka 2019.10.11
아파치 카프카 테스트용 data generator 소개 - ksql-datagen

아파치 카프카는 대규모 분산 스트리밍 플랫폼으로서 데이터파이프라인을 만들때 주로 사용이 가능하다. 데이터파이프라인을 만듦에 있어서 어떤 용도로 어떻게 동작하는지 확인하기 위해서는 직접 consumer로 데이터를 넣어주어 producer을 개발하거나 혹은 처음엔 cli producer/consumer을 사용하여 data를 topic에 넣어준다. Confluent사에서 제공하는 ksql-datagen을 사용한다면 여러 format으로 data를 auto generate하여 topic에 produce가능하다. ksql-datagen은 ksql을 설명하기 위해 처음 소개되었지만, ksql뿐만 아니라 kafka에서 consumer을 테스트하거나 다양한 format(avro 등)을 테스트하기에도 알맞다. 이번 포스..

빅데이터/Kafka 2019.10.10
KSQL - Docker을 사용한 KSQL server, cli 설치 및 실행

KSQL은 SQL을 사용하여 Kafka topic으로 들어오는 record들에 대해 query문을 작성하여 transform하거나 aggregation등을 수행할 수 있게 만들어준다. KSQL을 작성하고 사용하기 위해서는 KSQL 서버가 반드시 필요한데, 이번 포스팅에서는 KSQL 서버를 Docker를 사용하여 설치 및 실행해보고자 한다. 1. KSQL 서버 설치 및 실행 본인의 macbook에서 docker image로 실행하기 때문에 아래와 같이 command를 실행한다. $ docker run \ -p 127.0.0.1:8088:8088 \ -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \ -e KSQL_LISTENERS=http://0.0.0.0:8088/ \ -e KS..

빅데이터/Kafka 2019.10.08
[빅데이터]Kafka stream과 KSQL 소개 및 설명, 차이점

출처 : slideshare-Kafka Streams vs. KSQL for Stream Processing on top of Apache Kafka Kafka는 Bigdata를 처리하고 운영함에 있어서 필수불가결하다. 이미 많은 IT기업들(카카오, 네이버 등)에서는 kafka로 동작하는 실서비스를 운영하고 있으며 그에 대한 know-how도 상당히 많이 공유되고 있다. Kafka는 단순히 produce, consumer 구조로 사용가능하지만, KSQL이나 kafka stream을 사용하여 더욱 효과적이고 유연하게 데이터를 조작할 수 있다. 이번 포스팅에서는 KSQL과 Kafka stream에 대해서 소개하고 차이점도 알아보는 시간을 가지려고 한다. KSQL KSQL은 streaming SQL 엔진으로서..

빅데이터/Kafka 2019.10.08
[KAFKA]commitSync() 사용시 rebalance발동시 offset variable을 초기화 해야하는 이유?

아래는 oreilly의 Kafka: The Definitive Guide(카프카 핵심가이드)의 commitSync()와 rebalanceListener를 사용하여 topic을 consume하는 예시 코드이다. url : https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html private Map currentOffsets = new HashMap(); private class HandleRebalance implements ConsumerRebalanceListener { public void onPartitionsAssigned(Collection partitions) { } public void onPartit..

빅데이터/Kafka 2019.09.30
Kafka consumer의 Automatic Commit은 중복이 생길 수 있다

https://books.google.co.kr/books?id=a3wzDwAAQBAJ&pg=PA77&lpg=PA77 Kafka: The Definitive Guide Every enterprise application creates data, whether it’s log messages, metrics, user activity, outgoing messages, or something else. And how to move all of this data becomes nearly as important as the data itself. If you’re an application architect, develop books.google.co.jp 참고 출처 - Kafka Definitive gui..

빅데이터/Kafka 2019.09.25
enable.auto.commit 일 때 Kafka consumer close() method 동작분석

Kafka의 consumer를 사용할 때 offset에 대한 commit offset timing에 대해 여러가지 방법이 있다. 만약 enable.auto.commit=true 로 사용시 consumer에서 close()를 호출한다면 어떻게 kafka 내부에서 offset을 처리하는지 확인해보려고 한다. (아래는 kafka consumer 2.1.0 기준으로 작성되었습니다) 1. close() 호출 @Override public void close() { close(Duration.ofMillis(DEFAULT_CLOSE_TIMEOUT_MS)); } Kafka의 consumer가 close될 때 timeout 시간 내에 consumer를 종료한다.(default는 30초) 만약 auto-commit=tr..

빅데이터/Kafka 2019.09.02
[confluent]Kafka에 대한 상식 퀴즈 14개

confluent에서 kafka에 관련된 지식 퀴즈 14개를 아래와 같이 public에 공개하였다. 간단하지만 핵심적인 kafka 질문들을 모아놓아서 재밌어서 각 질문들에 대해 정리해보고자 한다. quiz site : https://www.surveymonkey.com/r/FundamentalsSelfAssess 각 문제에 대한 정답은 정답 : 뒤를 드래그 하면 보인다. 1. Kafka에서 record가 실리는 곳은? (1) Category (2) Subject (3) Topic (4) Table 정답 : (3) Topic 2. Kafka에서 각 데이터(record)들이 파티션 내부에서 유니크하게 구분되는 값은? (1) Primary Key (2) Offset (3) Identifier (4) Times..

빅데이터/Kafka 2019.08.30
Kafka burrow http endpoint 정리

이전 포스팅에서 Kafka burrow의 정보와 lag을 평가하는 방법에 대해 알아보았다. Burrow 개요 및 설명 : https://blog.voidmainvoid.net/243 Burrow에서 lag을 정의(평가)하는 방법 : https://blog.voidmainvoid.net/244 이번 포스팅에서는 Burrow에서 제공하는 http endpoint를 알아보고 각 topic별 offset, lag등의 정보를 가져오는 예제를 알아보고자 한다. Burrow Endpoint Burrow의 http server는 kafka, zookeeper의 정보를 효과적으로 가져올 수 있다. 모든 요청은 간단한 HTTP call로 요청되며(대부분 GET request) response는 JSON기반이다. Healt..

빅데이터/Kafka 2019.08.02
KSQL - Streaming SQL for Apache Kafka 개요 - readme 설명 번역

이 글은 KSQL github repository readme를 번역하였습니다. ☞ https://github.com/confluentinc/ksql KSQL은 아파치 카프카에서 사용가능한 스트리밍 SQL 엔진입니다. Java나 Python같은 프로그래밍 언어로 코드를 짤 필요 없이 간단하고 완전히 상호작용하는 SQL interface를 카프카를 통해 사용가능합니다. KSQL은 분산형, 확장형, 신뢰성, 실시간성이라는 특징을 가지고 있습니다. KSQL을 통해 강력한 aggregation, join, windowing, seessionization 등의 기능을 사용할 수 있습니다. 튜토리얼과 리소스를 사용하기 위해서는 이 링크(바로가기)를 누르세요. 그리고 아래 유튜브에서 KSQL demo를 확인 할 수 ..

빅데이터/Kafka 2019.07.07
아파치 Kafka Producer의 데이터 처리 내부 architecture 설명 및 튜닝포인트

지난 포스트에서 Kafka architecture 및 개요에 대해 알아보았다. ☞ 빅 데이터 처리를 위한 아파치 Kafka 개요 및 설명 포스팅 이번 포스트에서는 kafka architecture의 Producer 내부 데이터 흐름에 대해 알아보려고 한다. Kafka Producer 데이터 내부 처리 순서 #1 : User application thread에서 Record 추가#2 : Record Batch단위로 Record를 압축#3 : 복수의 Record Batch를 묶어 Broker로 보냄#4 : Record Batch를 각 Partition에 저장#5 : 지정시간에 request 에 대한 완료(ack)를 회신 - acks=0 : ack 응답없음(속도가장빠름, 데이터유실확률 가장 높음) - acks..

빅데이터/Kafka 2018.12.24
빅 데이터 처리를 위한 아파치 Kafka 개요 및 설명

Apache Kafka LinkedIn에서 최초로 만들고 opensource화 한 확장성이 뛰어난 분산 메시지 큐(FIFO : First In First Out) → 분산 아키텍쳐 구성, Fault-tolerance한 architecture(with zookeeper), 데이터 유실 방지를 위한 구성이 잘되어 있음→ AMQP, JMS API를 사용하지 않은 TCP기반 프로토콜 사용→ Pub / Sub 메시징 모델을 채용→ 읽기 / 쓰기 성능을 중시 → Producer가 Batch형태로 broker로 메시지 전송이 가능하여 속도 개선→ 파일 시스템에 메시지를 저장하므로, 데이터의 영속성 보장→ Consume된 메시지를 곧바로 삭제하지 않고 offset을 통한 consumer-group별 개별 consume..

빅데이터/Kafka 2018.12.24
728x90
반응형