SlideShare a Scribd company logo
Kafka 확장과 응용
2021.11.12 서장원
Apache Kafka
Ⅰ
Ⅱ
Ⅲ
카프카를 이용한 데이터 파이프라인 구축
카프카 스트림즈
카프카 SQL
데이터 파이프라인이란?
▶ 서로 다른 여러 시스템 간의 데이터 이동과 흐름을 말함
▶ 어느 한 단계의 출력이 다음 단계의 입력으로 이어지는 연결된 구조로서 수집과 정제, 집계 등을
동시에 병렬로 수행해 전체 시스템의 효율성을 추구
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
데이터 파이프라인 구축 시 고려사항
▶ 적시성 : 시간 단위의 배치부터 실시간 처리까지 데이터 흐름의 다양한 적시성 요구사항을 만족
▶ 신뢰성 : 단일 장애점을 없애고 신속하고 자동화된 복구가 가능
‘최소 한번’(at-least-once), ‘정확히 한번’(exactly-once) 등 다양한 방식의 데이터 전달 보장
▶ 처리량 : 매우 높은 처리량을 갖도록 수시로 확장과 조정이 가능해야 함
▶ 데이터 형식 : 다양한 형식의 데이터를 지원하고 제약이 없어야 함
▶ 보안 : 파이프라인을 거치는 데이터의 암호화 기능
파이프라인에 데이터를 읽거나 쓸 때의 인증 기능 제공
▶ 변환 : ETL(추출-변환-적재) or ELT(추출-적재-변환)
▶ 장애처리 : 잘못된 데이터의 유입방지, 분석할 수 없는 데이터의 복구, 결함있는 데이터의 정정 등
▶ 결합방지 : 데이터를 제공하는 소스와 데이터를 받아 사용하는 대상의 결합방지 필요
NiFi, ElasticSearch, Spark, Hbase, Hive, Hue, etc…
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ NiFi
- 분산 환경에서 대량의 데이터를 수집 및 처리할 수 있는 어플리케이션
- 웹 기반에 직관적인 인터페이스를 가지고 있어 접근성이 좋고 DataFlow를 쉽게 개발 가능
- 실시간 처리에 적합하고 데이터 추적이 쉬우며 NiFi 시스템 간 데이터 교환 가능
▶ ElasticSearch
- 아파치 루씬 기반의 분선형 RESTful 검색/분석 엔진
- 정형, 비정형, 위치정보, 메트릭 등 다양한 유형의 데이터를 원하는 방식으로 검색 및 결합 가능
- NoSQL 데이터베이스처럼 사용이 가능 및 내용 전체 색인해 특정 단어가 들어간 문서 검색 가능
▶ Spark
- 빅데이터 처리를 위한 오픈소스 병렬분산처리 플랫폼
- 인메모리 기반으로 고속 데이터 처리 가능하며, 일괄처리 작업 및 온라인 분석 처리에 유용
▶ Hbase
- 구글의 빅테이블을 모델로 개발된 column-based NoSQL DB
- 하둡의 HDS에서 동작하며 대량의 데이터를 안정적으로 다루는데 효과적임
▶ Hue
- 데이터를 탐색, 쿼리 및 시각화하기 위한 오픈소스 웹 기반 사용자 인터페이스
- 하둡과 하둡 에코시스템의 모니터링과 지원을 위한 인터페이스를 제공
▶ Hive
- 하둡을 기반으로 대용량 데이터를 질의하고 그 결과를 생성하는 SQL Query 엔진
- HiveQL 이라는 SQL 같은 언어를 제공하며 맵리듀스의 모든 기능을 제공함
카프카 활용 아키텍처 예시
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
카프카 활용 아키텍처 예시
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
Netfilx
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 실시간 모니터링 과 이벤트 처리를 위한 데이터 파이프라인의 백본 역할
▶ 초당 150만건 이상 생서외는 이용자의 로그 데이터를 카프카에 적재한 후 실시간 스트리밍 분석용
인프라를 이용해 이용자 반응에 실시간 대응
Uber
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 카프카를 이용해 분당 수백 번의 승차 관련 정보를 로그 데이터로 저장한 후 아마존 S3에 대량
로드하거나 하둡에 담아 스트리밍 처리
스포티파이
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 카프카를 데이터 허브로 이용해 사용자의 각종 로그 정보를 수집하고 분석해 플레이리스트
자동 제공 서비스 등을 제공
카프카 스트림즈
Ⅱ. 카프카 스트림즈
▶ 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리
▶ 레코드별 스트림 처리를 milliseconds latency로 지원
▶ 자바나 스칼라 어플리케이션 안에서 카프카 스트림즈 API를 호출해 사용
▶ 손쉽게 스트림 프로세싱 프로그램을 만들 수 있도록 고수준의 스트림 DSL 지원
▶ DSL로 구혀한 프로세서들이 스트림 처리를 위해 서로 연결된 토폴로지를 만들어 처리
▶ 간단하고 가벼우며 시스템이나 카프카에 대한 의존성이 없음
▶ 카프카 브로커나 클라언트에 장애가 생겨도 스트림에 대해 1번만 처리되도록 보장
▶ 한 번에 한 레코드만 처리하며 이중화된 로컬 상태 저장소를 지원
카프카 스트림즈
▶ Kafka Stream DSL
- 스트림과 테이블에 대한 추상화 제공( Kstream, Ktable, GlobalKTable)
- 함수형 스타일의 다양한 transformation 제공(map, filter aggregation, join ,windowing)
- DSL을 사용해서 토폴로지를 구성할 수 있음
▶ DSL을 이용해 토폴로지를 구성하는 순서
1. 카프카 토픽으로부터 데이터를 읽어 들이는 input 스트림을 지정
- input topic -> Kstream : Kstream은 분할된 레코드 스트림을 나타낸다.
Input 토픽의 모든 파티션 데이터의 집합
- input topic -> Ktable : 키값의 중복여부에 따라 insert/update/delete로 해석됨
interactive queries를 지원 시 테이블 이름을 지정하지 않으면 사용불가
2. input 스트림의 Transformation 구성
- transformation operation 들은 하나 이상의 프로세서로 변형 및 체이닝되어 복잡한 토폴로지 구성
- KStream관련 Operation : 하나 이상의 KStream 이나 KTable을 생성
- KTable 관련 Operation : KTable 만 생성
3. output 스트림을 카프카 토픽에 기록
Ⅱ. 카프카 스트림즈
카프카 스트림즈
▶ Transformation
1. stateless transformation : 처리를 위해 상태를 저장할 필요가 없음(State Store 불필요)
- Branch : 조건에 따라 하나 이상의 Kstream으로 분리
- Filter : 특정 조건을 만족하면 output stream으로 전달
- FlatMap : 하나의 레코드로 0개 이상의 레코드를 생성할 때 사용
레코드의 Key, Value, Type을 바꿀 수 있음
- GroupByKey : 키를 이용해 레코드들을 그룹화. 테이블을 aggregation하기 위한 전제조건이며
후속 operation 들을 위해 레코드들이 Key로 적절히 분할되도록 함
- Map : 하나의 레코드를 다른 레코드로 만듬. Key, Value, Type을 수정할 수 있음
- MapValues : 하나의 레코드를 다른 레코드로 만듬. 이때 Key는 변하지 않고 Value만 변경
2. Stateful transformation : input 레코드를 처리하기 위해서 상태값에 의존(State Store 필요)
- Aggragating : 레코드들의 groupBy, groupByKey로 그룹화 되면 KGroupedStream 혹은
KGroupedTable로 표현됨.
또한 reduce, adder, subtractor 같은 연산을 통해 집계될 수 있음
- Joining : Stream과 Table의 조인, 데이터베이스의 변경된 데이터를 카프카로 보냄.
Stream API를 이용해 로컬 조인을 수행해서 원격 데이터베이스의 부하와 latency를
크게 줄일 수 있음
- Windowing : Windowing을 사용하면 aggregation이나 join같은 Stateful 연산을 할 때 같은
Key를 가지는 레코드들을 windows라고 불리는 그룹으로 그룹화할 수 있음.
Ⅱ. 카프카 스트림즈
카프카 SQL(KSQL)
▶ 카프카용 스트리밍 SQL 엔진
▶ 자바나 파이썬 같은 프로그래밍 언어로 코드를 만들 필요없이 간단한 유사 SQL문을 사용가능
▶ 필터링, 변환, 집계, 조인, 윈도우, 세션화 등의 강력한 기능을 사용할 수 있음
▶ 카프카 스트림즈 API와 마찬가지로 스트림과 테이블이라는 핵심적인 데이터 추상화 방법을 제공
▶ 자바나 스칼라에 익숙하지 않은 개발자나 데이터엔지니어, 아키텍트 등의 담당자에게 유용
▶ 현재는 KsqlDB라는 이름으로 변경되어 발전 중
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL)
▶ KSQL 아키텍처
- KSQL 엔진 : KSQL 쿼리가 실행되는 곳. KSQL 쿼리를 작성하고 실행하면 KSQL 서버 안에서
application을 빌드하고 실행함. 각 KSQL 서버는 KSQL 엔진을 인스턴트로 실행
- REST 인터페이스 : KSQL 엔진에 클라이언트로 접근할 수 있는 인터페이스
REST 서버는 KSQL 엔진과 통신하면서 어플리케이션과 REST 통신 시 사용
- KSQL CLI : 콘솔화면에서 Mysql이나 PostgresSQL의 CLI와 유사한 사용법으로 KSQL 엔진에
접근할 수 있도록 함
- KSQL UI : Confluent Control Center를 사용해 KSQL을 접근가능하게 도와줌
▶ KSQL 주요 용어
- STREAM : 구조화된 데이터의 연속된 흐름. 추가는 가능하지만 변경되거나 삭제되지 않음
스트림 데이터는 카프카 토픽이나 이미 존재하는 다른 스트림으로부터 파생하여 만듬
- TABLE : 전통적인 데이터베이스의 테이블과 거의 동일하며 스트림 혹은 windowing을 통해 더
효과적인 데이터를 얻을 수 있음. 업데이트/삭제할 수 있으며 카프카토픽이나 이미 존재하는
스트림 또는 테이블로부터 파생하여 만들 수 있음
- STRUCT : KSQL 5.0 보다 높은 버전을 사용하면 Avro 또는 JSON 형식의 데이터를 STRUCT 타입으로
stream 또는 table을 생성할 수 있음.
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL)
▶ KSQL 커스텀 function(UDF, UDAF)
- KSQL API를 사용해 커스텀 function들을 개발하여 추가할 수 있음
- Stateless scalar function(UDF)
-> User Defiend Function으로 불리는 scalar function은 1개의 row를 받으면 1개의 데이터를
output으로 리턴
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL) VS Kafka Streams
Ⅲ. 카프카 SQL(KSQL)
감사합니다.

More Related Content

PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PPTX
Apache kafka 관리와 모니터링
PPTX
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
PDF
Jenkins를 활용한 Openshift CI/CD 구성
PPTX
Airflow를 이용한 데이터 Workflow 관리
PDF
Introduction to Apache Flink - Fast and reliable big data processing
PDF
2020.02.06 우리는 왜 glue를 버렸나?
PDF
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 관리와 모니터링
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
Jenkins를 활용한 Openshift CI/CD 구성
Airflow를 이용한 데이터 Workflow 관리
Introduction to Apache Flink - Fast and reliable big data processing
2020.02.06 우리는 왜 glue를 버렸나?
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기

What's hot (20)

PDF
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
PDF
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
PDF
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
PDF
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
PDF
ksqlDB: A Stream-Relational Database System
PPTX
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
PDF
Understanding of Apache kafka metrics for monitoring
PDF
Apache kafka performance(latency)_benchmark_v0.3
PDF
Hello, kafka! (an introduction to apache kafka)
PDF
실시간 스트리밍 분석 Kinesis Data Analytics Deep Dive
PDF
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
PDF
Apache Spark on K8S Best Practice and Performance in the Cloud
PPTX
Apache kafka
PDF
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
PPTX
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
PPTX
Apache Flink in the Cloud-Native Era
PPTX
Kafka Tutorial: Kafka Security
PDF
Introducing the Apache Flink Kubernetes Operator
PPTX
Envoy and Kafka
PDF
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
ksqlDB: A Stream-Relational Database System
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Understanding of Apache kafka metrics for monitoring
Apache kafka performance(latency)_benchmark_v0.3
Hello, kafka! (an introduction to apache kafka)
실시간 스트리밍 분석 Kinesis Data Analytics Deep Dive
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache Spark on K8S Best Practice and Performance in the Cloud
Apache kafka
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Apache Flink in the Cloud-Native Era
Kafka Tutorial: Kafka Security
Introducing the Apache Flink Kubernetes Operator
Envoy and Kafka
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Ad

Similar to Apache kafka 확장과 응용 (20)

PDF
Kafka streams 20201012
PPT
빅데이터 기본개념
PDF
[236] 카카오의데이터파이프라인 윤도영
PPTX
An introduction to hadoop
PDF
ksqlDB로 시작하는 스트림 프로세싱
PDF
Data in Motion Tour Seoul 2024 - Roadmap Demo
PDF
빅데이터, big data
PPTX
Streaming platform Kafka in SK planet
PDF
ksqlDB로 실시간 데이터 변환 및 스트림 처리
PDF
빅데이터 기술 현황과 시장 전망(2014)
PDF
Big data 20111203_배포판
PDF
2012 빅데이터 big data 발표자료
PPT
Big Data Overview
PDF
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
PDF
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
PPTX
Hadoop설명
PDF
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
PDF
빅데이터를 위한 AWS 모범사례와 아키텍처 구축 패턴 :: 양승도 :: AWS Summit Seoul 2016
PDF
[AWS Builders] 우리 워크로드에 맞는 데이터베이스 찾기
PDF
Apache hbase overview (20160427)
Kafka streams 20201012
빅데이터 기본개념
[236] 카카오의데이터파이프라인 윤도영
An introduction to hadoop
ksqlDB로 시작하는 스트림 프로세싱
Data in Motion Tour Seoul 2024 - Roadmap Demo
빅데이터, big data
Streaming platform Kafka in SK planet
ksqlDB로 실시간 데이터 변환 및 스트림 처리
빅데이터 기술 현황과 시장 전망(2014)
Big data 20111203_배포판
2012 빅데이터 big data 발표자료
Big Data Overview
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
Hadoop설명
Data in Motion을 위한 이벤트 기반 마이크로서비스 아키텍처 소개
빅데이터를 위한 AWS 모범사례와 아키텍처 구축 패턴 :: 양승도 :: AWS Summit Seoul 2016
[AWS Builders] 우리 워크로드에 맞는 데이터베이스 찾기
Apache hbase overview (20160427)
Ad

Recently uploaded (9)

PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [토이스토리] : Wispy
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [영웅호걸] : Context-Aware Real-time Sentiment based ...
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [땡큐쏘아마취] : 소마챗 : Agentic RAG 기반 소아마취 업무지원 챗봇
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [청진스] : Multi-Label Lung Sound Classification ba...
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [직행복] : 실시간 로그 처리 기반 추천시스템
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [소크라데이터스] : 웨어러블 기기를 활용한 생체 신호 기반 감정 데이터 수집 및 감정 ...
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [아라보아즈] : 아라보아의 장기적 성장을 위한 DDDM 환경 구축
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SNOMED] : LangGraph 기반 OMOP CDM 매핑 파이프라인 구축
PDF
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중증외상센터] : 24시간 심전도 Holter 데이터 기반의 소아 PSVT 예측 모델 개발
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [토이스토리] : Wispy
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [영웅호걸] : Context-Aware Real-time Sentiment based ...
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [땡큐쏘아마취] : 소마챗 : Agentic RAG 기반 소아마취 업무지원 챗봇
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [청진스] : Multi-Label Lung Sound Classification ba...
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [직행복] : 실시간 로그 처리 기반 추천시스템
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [소크라데이터스] : 웨어러블 기기를 활용한 생체 신호 기반 감정 데이터 수집 및 감정 ...
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [아라보아즈] : 아라보아의 장기적 성장을 위한 DDDM 환경 구축
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SNOMED] : LangGraph 기반 OMOP CDM 매핑 파이프라인 구축
제 22회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중증외상센터] : 24시간 심전도 Holter 데이터 기반의 소아 PSVT 예측 모델 개발

Apache kafka 확장과 응용

  • 2. Apache Kafka Ⅰ Ⅱ Ⅲ 카프카를 이용한 데이터 파이프라인 구축 카프카 스트림즈 카프카 SQL
  • 3. 데이터 파이프라인이란? ▶ 서로 다른 여러 시스템 간의 데이터 이동과 흐름을 말함 ▶ 어느 한 단계의 출력이 다음 단계의 입력으로 이어지는 연결된 구조로서 수집과 정제, 집계 등을 동시에 병렬로 수행해 전체 시스템의 효율성을 추구 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 데이터 파이프라인 구축 시 고려사항 ▶ 적시성 : 시간 단위의 배치부터 실시간 처리까지 데이터 흐름의 다양한 적시성 요구사항을 만족 ▶ 신뢰성 : 단일 장애점을 없애고 신속하고 자동화된 복구가 가능 ‘최소 한번’(at-least-once), ‘정확히 한번’(exactly-once) 등 다양한 방식의 데이터 전달 보장 ▶ 처리량 : 매우 높은 처리량을 갖도록 수시로 확장과 조정이 가능해야 함 ▶ 데이터 형식 : 다양한 형식의 데이터를 지원하고 제약이 없어야 함 ▶ 보안 : 파이프라인을 거치는 데이터의 암호화 기능 파이프라인에 데이터를 읽거나 쓸 때의 인증 기능 제공 ▶ 변환 : ETL(추출-변환-적재) or ELT(추출-적재-변환) ▶ 장애처리 : 잘못된 데이터의 유입방지, 분석할 수 없는 데이터의 복구, 결함있는 데이터의 정정 등 ▶ 결합방지 : 데이터를 제공하는 소스와 데이터를 받아 사용하는 대상의 결합방지 필요
  • 4. NiFi, ElasticSearch, Spark, Hbase, Hive, Hue, etc… Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ NiFi - 분산 환경에서 대량의 데이터를 수집 및 처리할 수 있는 어플리케이션 - 웹 기반에 직관적인 인터페이스를 가지고 있어 접근성이 좋고 DataFlow를 쉽게 개발 가능 - 실시간 처리에 적합하고 데이터 추적이 쉬우며 NiFi 시스템 간 데이터 교환 가능 ▶ ElasticSearch - 아파치 루씬 기반의 분선형 RESTful 검색/분석 엔진 - 정형, 비정형, 위치정보, 메트릭 등 다양한 유형의 데이터를 원하는 방식으로 검색 및 결합 가능 - NoSQL 데이터베이스처럼 사용이 가능 및 내용 전체 색인해 특정 단어가 들어간 문서 검색 가능 ▶ Spark - 빅데이터 처리를 위한 오픈소스 병렬분산처리 플랫폼 - 인메모리 기반으로 고속 데이터 처리 가능하며, 일괄처리 작업 및 온라인 분석 처리에 유용 ▶ Hbase - 구글의 빅테이블을 모델로 개발된 column-based NoSQL DB - 하둡의 HDS에서 동작하며 대량의 데이터를 안정적으로 다루는데 효과적임 ▶ Hue - 데이터를 탐색, 쿼리 및 시각화하기 위한 오픈소스 웹 기반 사용자 인터페이스 - 하둡과 하둡 에코시스템의 모니터링과 지원을 위한 인터페이스를 제공 ▶ Hive - 하둡을 기반으로 대용량 데이터를 질의하고 그 결과를 생성하는 SQL Query 엔진 - HiveQL 이라는 SQL 같은 언어를 제공하며 맵리듀스의 모든 기능을 제공함
  • 5. 카프카 활용 아키텍처 예시 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
  • 6. 카프카 활용 아키텍처 예시 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
  • 7. Netfilx Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 실시간 모니터링 과 이벤트 처리를 위한 데이터 파이프라인의 백본 역할 ▶ 초당 150만건 이상 생서외는 이용자의 로그 데이터를 카프카에 적재한 후 실시간 스트리밍 분석용 인프라를 이용해 이용자 반응에 실시간 대응
  • 8. Uber Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 카프카를 이용해 분당 수백 번의 승차 관련 정보를 로그 데이터로 저장한 후 아마존 S3에 대량 로드하거나 하둡에 담아 스트리밍 처리
  • 9. 스포티파이 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 카프카를 데이터 허브로 이용해 사용자의 각종 로그 정보를 수집하고 분석해 플레이리스트 자동 제공 서비스 등을 제공
  • 10. 카프카 스트림즈 Ⅱ. 카프카 스트림즈 ▶ 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리 ▶ 레코드별 스트림 처리를 milliseconds latency로 지원 ▶ 자바나 스칼라 어플리케이션 안에서 카프카 스트림즈 API를 호출해 사용 ▶ 손쉽게 스트림 프로세싱 프로그램을 만들 수 있도록 고수준의 스트림 DSL 지원 ▶ DSL로 구혀한 프로세서들이 스트림 처리를 위해 서로 연결된 토폴로지를 만들어 처리 ▶ 간단하고 가벼우며 시스템이나 카프카에 대한 의존성이 없음 ▶ 카프카 브로커나 클라언트에 장애가 생겨도 스트림에 대해 1번만 처리되도록 보장 ▶ 한 번에 한 레코드만 처리하며 이중화된 로컬 상태 저장소를 지원
  • 11. 카프카 스트림즈 ▶ Kafka Stream DSL - 스트림과 테이블에 대한 추상화 제공( Kstream, Ktable, GlobalKTable) - 함수형 스타일의 다양한 transformation 제공(map, filter aggregation, join ,windowing) - DSL을 사용해서 토폴로지를 구성할 수 있음 ▶ DSL을 이용해 토폴로지를 구성하는 순서 1. 카프카 토픽으로부터 데이터를 읽어 들이는 input 스트림을 지정 - input topic -> Kstream : Kstream은 분할된 레코드 스트림을 나타낸다. Input 토픽의 모든 파티션 데이터의 집합 - input topic -> Ktable : 키값의 중복여부에 따라 insert/update/delete로 해석됨 interactive queries를 지원 시 테이블 이름을 지정하지 않으면 사용불가 2. input 스트림의 Transformation 구성 - transformation operation 들은 하나 이상의 프로세서로 변형 및 체이닝되어 복잡한 토폴로지 구성 - KStream관련 Operation : 하나 이상의 KStream 이나 KTable을 생성 - KTable 관련 Operation : KTable 만 생성 3. output 스트림을 카프카 토픽에 기록 Ⅱ. 카프카 스트림즈
  • 12. 카프카 스트림즈 ▶ Transformation 1. stateless transformation : 처리를 위해 상태를 저장할 필요가 없음(State Store 불필요) - Branch : 조건에 따라 하나 이상의 Kstream으로 분리 - Filter : 특정 조건을 만족하면 output stream으로 전달 - FlatMap : 하나의 레코드로 0개 이상의 레코드를 생성할 때 사용 레코드의 Key, Value, Type을 바꿀 수 있음 - GroupByKey : 키를 이용해 레코드들을 그룹화. 테이블을 aggregation하기 위한 전제조건이며 후속 operation 들을 위해 레코드들이 Key로 적절히 분할되도록 함 - Map : 하나의 레코드를 다른 레코드로 만듬. Key, Value, Type을 수정할 수 있음 - MapValues : 하나의 레코드를 다른 레코드로 만듬. 이때 Key는 변하지 않고 Value만 변경 2. Stateful transformation : input 레코드를 처리하기 위해서 상태값에 의존(State Store 필요) - Aggragating : 레코드들의 groupBy, groupByKey로 그룹화 되면 KGroupedStream 혹은 KGroupedTable로 표현됨. 또한 reduce, adder, subtractor 같은 연산을 통해 집계될 수 있음 - Joining : Stream과 Table의 조인, 데이터베이스의 변경된 데이터를 카프카로 보냄. Stream API를 이용해 로컬 조인을 수행해서 원격 데이터베이스의 부하와 latency를 크게 줄일 수 있음 - Windowing : Windowing을 사용하면 aggregation이나 join같은 Stateful 연산을 할 때 같은 Key를 가지는 레코드들을 windows라고 불리는 그룹으로 그룹화할 수 있음. Ⅱ. 카프카 스트림즈
  • 13. 카프카 SQL(KSQL) ▶ 카프카용 스트리밍 SQL 엔진 ▶ 자바나 파이썬 같은 프로그래밍 언어로 코드를 만들 필요없이 간단한 유사 SQL문을 사용가능 ▶ 필터링, 변환, 집계, 조인, 윈도우, 세션화 등의 강력한 기능을 사용할 수 있음 ▶ 카프카 스트림즈 API와 마찬가지로 스트림과 테이블이라는 핵심적인 데이터 추상화 방법을 제공 ▶ 자바나 스칼라에 익숙하지 않은 개발자나 데이터엔지니어, 아키텍트 등의 담당자에게 유용 ▶ 현재는 KsqlDB라는 이름으로 변경되어 발전 중 Ⅲ. 카프카 SQL(KSQL)
  • 14. 카프카 SQL(KSQL) ▶ KSQL 아키텍처 - KSQL 엔진 : KSQL 쿼리가 실행되는 곳. KSQL 쿼리를 작성하고 실행하면 KSQL 서버 안에서 application을 빌드하고 실행함. 각 KSQL 서버는 KSQL 엔진을 인스턴트로 실행 - REST 인터페이스 : KSQL 엔진에 클라이언트로 접근할 수 있는 인터페이스 REST 서버는 KSQL 엔진과 통신하면서 어플리케이션과 REST 통신 시 사용 - KSQL CLI : 콘솔화면에서 Mysql이나 PostgresSQL의 CLI와 유사한 사용법으로 KSQL 엔진에 접근할 수 있도록 함 - KSQL UI : Confluent Control Center를 사용해 KSQL을 접근가능하게 도와줌 ▶ KSQL 주요 용어 - STREAM : 구조화된 데이터의 연속된 흐름. 추가는 가능하지만 변경되거나 삭제되지 않음 스트림 데이터는 카프카 토픽이나 이미 존재하는 다른 스트림으로부터 파생하여 만듬 - TABLE : 전통적인 데이터베이스의 테이블과 거의 동일하며 스트림 혹은 windowing을 통해 더 효과적인 데이터를 얻을 수 있음. 업데이트/삭제할 수 있으며 카프카토픽이나 이미 존재하는 스트림 또는 테이블로부터 파생하여 만들 수 있음 - STRUCT : KSQL 5.0 보다 높은 버전을 사용하면 Avro 또는 JSON 형식의 데이터를 STRUCT 타입으로 stream 또는 table을 생성할 수 있음. Ⅲ. 카프카 SQL(KSQL)
  • 15. 카프카 SQL(KSQL) ▶ KSQL 커스텀 function(UDF, UDAF) - KSQL API를 사용해 커스텀 function들을 개발하여 추가할 수 있음 - Stateless scalar function(UDF) -> User Defiend Function으로 불리는 scalar function은 1개의 row를 받으면 1개의 데이터를 output으로 리턴 Ⅲ. 카프카 SQL(KSQL)
  • 16. 카프카 SQL(KSQL) VS Kafka Streams Ⅲ. 카프카 SQL(KSQL)