SlideShare a Scribd company logo
SPARK+AI

SUMMIT 2019
아이나비시스템즈 선행기술개발팀
박대성 (bigcastle@inavi.kr)
APRIL 23 - 25 | SAN FRANCISCO
SPARK+AI SUMMIT 2019
Koalas Scheduling Policies
Nested Columns
Recommendation System
Design Structured Streaming Pipelines
Data Pipelines
Real-Time Analytics
Neptune
…
Experienced Things
SPARK+AI SUMMIT 2019
OVERVIEW
▸ 현장 이미지
▸ What’s Next for Apache Spark
▸ Databricks Platforms
▸ Streaming Data Pipelines
▸ Other Sessions
SPARK+AI SUMMIT 2019
현장 이미지
SPARK+AI SUMMIT 2019
현장 이미지
SPARK+AI SUMMIT 2019
현장 이미지
WHAT’S
NEXT FOR
APACHE SPARK
SPARK+AI SUMMIT 2019
SPARK 1.0
SPARK 2.0
2014 2016
SPARK 3.0
2019
(expected)
1000가지 이상의
기능 및 버그 수정
APACHE SPARK 3.0
SPARK+AI SUMMIT 2019
APACHE SPARK DESIGN PRINCIPLES
1 Unify Data + AI
2
3
Run Everywhere
Easy-to-use APIs
SPARK+AI SUMMIT 2019
APACHE SPARK DESIGN PRINCIPLES
1 Unify Data + AI
2
3
Run Everywhere
Easy-to-use APIs
Spark MLLib
PYTORCH
TensorFlow
mxnet
CNTK
…
Tracking,
Management
SPARK+AI SUMMIT 2019
APACHE SPARK DESIGN PRINCIPLES
1 Unify Data + AI
2
3
Run Everywhere
Easy-to-use APIs
Spark
Standalone Mode
SPARK+AI SUMMIT 2019
APACHE SPARK DESIGN PRINCIPLES
1 Unify Data + AI
2
3
Run Everywhere
Easy-to-use APIs
2013: APIs for data engineers
2015: APIs for data engineers & scientists
SPARK+AI SUMMIT 2019
APACHE SPARK DESIGN PRINCIPLES
1 Unify Data + AI
2
3
Run Everywhere
Easy-to-use APIs
Typical journey of a Data Scientist
Education,
Analyze Small Datasets
PANDAS SPARK
Analyze Large Datasets
Koalas - Pandas Dataframe API on Spark
DATABRICKS
PLATFORMS
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ 데이터는 분석을 위해 준비되어 있지 않음
고객 데이터 클릭 이벤트
센서 데이터
이미지 데이터
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ Delta Lake - Open Source Project
고객 데이터 클릭 이벤트
센서 데이터
이미지 데이터
Delta Lake
ACID Transactions
Unified Streaming & Batch
Scalable Metadata handling
Time Travel
Schema enforcement
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ 복잡한 람다-아키텍쳐를 단순화 시킴
Event
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ 복잡한 람다-아키텍쳐를 단순화 시킴
Event
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ 복잡한 람다-아키텍쳐를 단순화 시킴
Event
df.write.format(“parquet”).save(“data”)
df.write.format(“delta”).save(“data”)
SPARK+AI SUMMIT 2019
DELTA LAKE
▸ Pros
▸ Full ACID Transactions 지원
▸ 데이터 버저닝
▸ 배치 & 스트리밍 통합
▸ 기존 Apache Spark API와 100% 호환
▸ 테이블 스키마 변경 가능
▸ Cons
▸ Apache Spark 2.4.2 이상 지원
▸ 읽기 성능을 높이기 위해 주기적으로 Compaction(Merge) 작업이 필요함.
▸ 일부 유용한 기능이 Managed 버전에서만 지원되고 OSS버전에선 사용할 수 없음.

(향후 지원계획)
SPARK+AI SUMMIT 2019
ML FLOW: OPEN SOURCE ML PLATFORM
▸ ML Lifecycle
Raw Data Data Preparation Training Deployment
SPARK+AI SUMMIT 2019
ML FLOW: OPEN SOURCE ML PLATFORM
▸ ML Lifecycle
Raw Data Data Preparation Training Deployment
AWS S3
Hadoop
Delta Lake
MongoDB
Kafka
…
Apache Spark
SQL
Python
Pandas
Scikit-learn
…
Apache Spark
PYTORCH
XGBoost
TensorFlow
R
…
Docker
Apache Spark
AWS SageMaker
Mobile Phone
….
Model Exchange
SPARK+AI SUMMIT 2019
ML FLOW: OPEN SOURCE ML PLATFORM
▸ Custom ML Platforms
Facebook FBLearner
Uber Michelangelo
Google TFX
Samsung Brightics AI
Dataiku
+ ML Cycle 을 일반화 시켜서 그냥 가져다 쓰기만 하면 된다.
- 알고리즘/프레임웍에 제약이 있거나 일부 도메인에만 유용할 수 있음
SPARK+AI SUMMIT 2019
ML FLOW: OPEN SOURCE ML PLATFORM
▸ MLflow Tracking : experiment tracking
▸ MLflow Projects : reproducible runs
▸ MLflow Models : model packaging
SPARK+AI SUMMIT 2019
ML FLOW: OPEN SOURCE ML PLATFORM
mlflow.log_param(“lambda”, 0.5)
mlflow.log_metric(“rmse”, 0.2)
아래와 같은 코드만 넣어주면
Managed by Databricks
Docs : mlflow.org
STREAMING
DATA PIPELINES
SPARK+AI SUMMIT 2019
참고한 세션들
▸ FIS - Life Is but a Stream
▸ SpotX - Spark Streaming
▸ COMCAST - Winning the Audience With AI
▸ Databricks - Productizing Structured Streaming Jobs
▸ Spark Commiter - Designing Structured Streaming Pipelines
▸ Eventbrite - Near Real-Time Analytics With Apache Spark
▸ Sparkflows.Io - Self-Service Apache Spark Structured Streaming
Applications & Analytics
SPARK+AI SUMMIT 2019
CASE: FIS GLOBAL
▸ 1968년 창립된 직원수 53,000명의 금융 소프트웨어를 만드는 기업
▸ 주 고객은 은행과 금융회사
BUSINESS
INTELLIGENCE HYBRID ETL PURE
STREAMING
SPARK+AI SUMMIT 2019
CASE: FIS GLOBAL
초창기 파이프라인
STREAMING EVOLUTION
SPARK+AI SUMMIT 2019
CASE: FIS GLOBAL
▸ 이후 Streaming 샘플을 Databricks Platform으로 보여줌
▸ https://github.com/KevenMellott91/spark-summit-2019-demo
SPARK+AI SUMMIT 2019
CASE: SPOTX
▸ Spark Streaming, DStream, Structured Streaming를 설명
▸ 개발 시, Small Datasets을 가지고 Local Mode에서 개발하는 것을 강조함
▸ 개발도구는 IntelliJ와 SBT를 추천함
▸ 테스팅은 .queueStream() 과 같은 유닛 테스트를 진행
▸ 모니터링은 리스너를 오버라이딩하여 mysql, influxdb, grafana를 통해 모니터링
▸ Kafka Offset 관리는 배치완료 리스너를 오버라이딩 하여 MySQL에 offset을 기록하
고 읽어올 수 있도록 하였음
▸ 몇가지 유용한 설정들 공유
▸ kafka의 auto commit off, rdd.compress, spark.storage.memoryFraction …
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 세계에서 가장 큰 케이블 텔레비전 방송사 및 ISP
▸ 음성으로 컨텐츠를 찾아주는데 많은 어려움이 있음
▸ 고객의 의도를 파악하기 어려움
▸ 초당 수십억개의 세션과 수백만의 트랜잭션이 발생
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
초창기 파이프라인
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 그렇게 서버가 터졌습니다!
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
초당 1500만 트랜젝션 발생
AWS S3는 초당 3,500건의 제한이 있음
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 2차 시도 (분산처리)
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
S3
S3
S3
S3
키로 분산 저장
…
…
“이제 잘될거야!”
640 Machines
32Jobs (2.5 PB)
key=1
key=2
key=3
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 2차 시도 (분산처리): 그리고 서버가 터지기 시작합니다.
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
S3
ERR
S3
S3
키로 분산 저장
…
…
640Machines
32Jobs (2.5 PB)
key=1
key=2
key=3
COMPLEX!!
FREQUENT FAILURES!!
UNMANAGEABLE!!
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 3차 시도 (Delta Lake): Scale, Reliability, Performance
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
S3
Auto Optimize
Delta Lake
Single Job
64 Machines
Enable Random Prefix
= No more Key Management
S3
Delta Lake
Auto Optimize
Delta Lake
Enable Random Prefix
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 3차 시도 (Delta Lake): Scale, Reliability, Performance
데이터 수집 처리
(전처리)
세션화
(분석)
최적화
(저장/배포)
S3
Auto Optimize
Delta Lake
Single Job
64Machines
Enable Random Prefix
= No more Key Management
S3
Delta Lake
Auto Optimize
Delta Lake
Enable Random Prefix
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 추가적인 문제: Complex Development Environment of ML
다양한 개발 환경
PB 단위의 방대한 데이터
100여가지의 많은 모델
데이터 과학자가 세계에 퍼져있음
PYTORCH
XGBoost
Scikit-Learn
+
SLOW ITERATION
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ SELF-SERVICE AI
PYTORCH
XGBoost
Scikit-Learn
Delta Lake
데이터는 Delta Lake로
개발도구 간의 Data Replication 을 최소화
학습 모델은 Databricks Workspace로
Notebook 편집 모드로 모델 작성/개발
모델은 mlflow로
Tracking, Packaging
완성된 모델은 Kubeflow로
상용 서비스로 배포, 적용
클릭 1번으로 실행, 코드 재사용, 추적, 배포
SPARK+AI SUMMIT 2019
CASE: COMCAST
▸ 신뢰성 확보: PB 단위의 데이터를 처리하면서 에러가 발생하지 않음
▸ 인스턴스 10배 감소: 640 -> 64!
▸ 팀 생산성 향상: 전세계의 데이터 과학자들이 협업
▸ 빠른 적용: 몇 주 걸리던 배포가 5분만에 가능해짐
SPARK+AI SUMMIT 2019
CASE: DATABRICKS
▸ Structured Streaming 에 대한 전반적인 설명을 함

(구축/테스팅/모니터링/배포)
▸ Data Pipelines @ Databricks
SPARK+AI SUMMIT 2019
CASE: DATABRICKS
▸ Bronze Table
▸ 데이터를 가공하진 않고, 중복제거와 JSON으로 변환하여 Parquet Format으로 저장
▸ 만약의 경우를 대비하여 데이터에 오류가 있으면 수정하기 위해 2주 가량 보관
▸ Silver Table
▸ 10/100 개의 직접적인 쿼리를 날릴수 있는 테이블
▸ 개인정보 등을 마스킹하고 일부 교정된 데이터를 저장함
▸ Gold Table
▸ Silver Table로 부터 연산/집계된 테이블
▸ 데이터 사이언스 팀으로부터 만들어짐
SPARK+AI SUMMIT 2019
DESIGNING STRUCTURED STREAMING PIPELINES
▸ Tathagata Das (Spark Committer, PMC)
Spark는 자동으로 batch-like 하도록 실행 계획을 최적화 함
SPARK+AI SUMMIT 2019
DESIGNING STRUCTURED STREAMING PIPELINES
▸ Streaming Pipelines을 설계할 때는 3가지의 질문을 던져야함
How?
What? Why?
데이터는 무슨 데이터인가?
무슨 결과가 나와야 하는가?
얼마나 빠른 응답이 요구되는가?
처리량은 얼마나 되는가?
왜 스트리밍으로 처리해야하는가?
결과는 누구(사람/컴퓨터)를 위한 건가?
언제 사용되는 결과인가?
어떻게 데이터를 처리할 것인가?
어떻게 결과를 저장할 것인가?
SPARK+AI SUMMIT 2019
“나는 대시보드의 숫자를
매 초마다 업데이트 하길 원해”
WHY? 에서 이뤄지는 일반적인 실수
사람이 몇 분/시간 안에
행동을 취한다면
매 초마다 업데이트 할 필요가 없음
“나는 매 초마다 장애를
진단하기 위해서 만들거야”
(하지만 내 데이터는 자주 장애가 발생 해)
낮은 품질의 데이터와
결과에 대한 신속한 조치를
할 필요가 없음
(데이터는 key-value 스토어에 쌓고 있어)
“데이터를 머신러닝 학습에
사용할 거야”
Key-value 스토어는
데이터 스캔 작업으로 인해
큰 데이터를 처리하는데 적합하지 않음
SPARK+AI SUMMIT 2019
DESIGNING STRUCTURED STREAMING PIPELINES
▸ Streaming Design Patterns
How?
What?
Why?
SPARK+AI SUMMIT 2019
DESIGNING STRUCTURED STREAMING PIPELINES
▸ Streaming Design Patterns
How?
What?
Why?
비정형 데이터를
구조적 테이블 데이터로 변환할거야
Latency : few minutes
구조화된 최신의 데이터를
인터렉티브하게 질의하거나,
배치 작업에 사용해야 해
Structured Streaming을 사용하여 데이터를 정형화
저장은 확장 가능한 구조적 스토리지를 사용 할 것.
Data Skipping 지원이 필요.
=> Parquet, ORC, Delta Lake, or even better
OTHER
SESSIONS
SPARK+AI SUMMIT 2019
TensorFlow 2.0
▸ TensorFlow 2.0 High Level API - Keras
▸ Improved Debugger with Eager Execution
▸ Distribute Strategy - Easy to use Training on Multiple GPU
▸ Deploy Anywhere
▸ Server - TensorFlow Extended
▸ Edge Devices (Mobile) - TensorFlow Lite
▸ JavaScript - TensorFlow .JS
SPARK+AI SUMMIT 2019
Geospatial Analytics at Scale with Deep Learning and Apache Spark
▸ Databricks 에서 발표
▸ 대용량 위성사진(타일 이미지)을 딥러닝을 이용하여 자동차를 인식하고
이를 처리하여 지도에 히트맵 형태로 뿌려주는 과정을 이야기
▸ Magellan 을 소개
SPARK+AI SUMMIT 2019
Geospatial Analytics…: Magellan
▸ Geospatial 분석을 위한 분산 실행 엔진 오픈소스 라이브러리
▸ 다양한 포맷을 지원
▸ ESRI, GeoJSON, OSM-XML, WKT
▸ 기본적인 지오메트릭 연산을 수행가능함
▸ Polygon intersection, Joining
▸ Spark SQL 엔진에 통합되어 높은 퍼포먼스로 인덱스를 생성함
SPARK+AI SUMMIT 2019
Geospatial Analytics…: Magellan
https://github.com/harsha2010/magellan
SPARK+AI SUMMIT 2019
ETC
▸ Microsoft - Black in AI
▸ KPMG - Overview of the Recommend System
▸ Apple - Nested Columns Support in Parquet
▸ Netflex - Recommendation System “Taste Cluster”
▸ Neptune: Extended DAG Scheduler @ Spark 2.4 extension
▸ DASK - Distribution Parallel Computing in Python
SPARK+AI SUMMIT 2019
SUMMARY
▸ 세션들의 난이도는 쉬운 편
▸ 기초적인 설명과 사례 예시를 많이 들어줬음
▸ Apache Spark를 위한 Summit
▸ Spark의 큰 변화가 있을 것으로 예상
▸ Hive 3의 변화처럼 큰 변화가 계속 진행 중임

Spark 2.3과 2.4의 차이도 매우 커짐
▸ 앞으로도 Spark의 인기는 지속될 것으로
보임
▸ Structured Streaming이 너무 강력함.

쉬운 Lambda 아키텍쳐 구현이 가능.
감사합니다.

More Related Content

PDF
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
PDF
DataWorks Summit 2018
PPTX
OPEN_POWER8_SESSION_20150316
PDF
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
PDF
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
PPTX
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
PDF
AWS re:Invent 2018 신규 서비스 살펴보기 - 윤석찬, AWS 테크에반젤리스트
PDF
NetApp AI Control Plane
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
DataWorks Summit 2018
OPEN_POWER8_SESSION_20150316
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
AWS re:Invent 2018 신규 서비스 살펴보기 - 윤석찬, AWS 테크에반젤리스트
NetApp AI Control Plane

Similar to Spark Summit 2019 (20)

PPTX
Azure databases for PostgreSQL, MySQL and MariaDB
PDF
아마존은 반도체를 어떻게 설계하는가? -LS 산전 HPC 적용 사례와 함께 - 이현석 사업 개발 담당 이사, AWS / 유성열 책임 연구원...
PDF
Lablupconf session8 "Paving the road to AI-powered world"
PPTX
Streaming platform Kafka in SK planet
PDF
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
PDF
SAP on AWS 사례로 알아보는 핵심 업무 이전 : SAP Competency 파트너사의 경험과 비젼 - 이상규 솔루션즈 아키텍트, A...
PPTX
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
PDF
Openshift 활용을 위한 Application의 준비, Cloud Native
PDF
AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트
PDF
Azure Databases for PostgreSQL MYSQL and MariaDB
PPTX
Open standard open cloud engine for digital business process
PDF
Cloudera session seoul - Spark bootcamp
PDF
SOSCON 2017 - Backend.AI
PDF
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
PDF
JMI Techtalk : Backend.AI
PDF
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
PDF
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
PDF
170426 cloud day in 포항 1. 클라우드컴퓨팅과 aws 소개_aws 이재현 매니저
PDF
DB관점에서 본 빅데이터 (2019년 8월)
PDF
디지털 미디어 산업을 위한 AWS 서비스 :: 홍두현 :: AWS Summit Seoul 2016
Azure databases for PostgreSQL, MySQL and MariaDB
아마존은 반도체를 어떻게 설계하는가? -LS 산전 HPC 적용 사례와 함께 - 이현석 사업 개발 담당 이사, AWS / 유성열 책임 연구원...
Lablupconf session8 "Paving the road to AI-powered world"
Streaming platform Kafka in SK planet
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
SAP on AWS 사례로 알아보는 핵심 업무 이전 : SAP Competency 파트너사의 경험과 비젼 - 이상규 솔루션즈 아키텍트, A...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
Openshift 활용을 위한 Application의 준비, Cloud Native
AWS re:Invent 2018 콘테이너 신규 서비스 기능 살펴보기 - 윤석찬, AWS 테크에반젤리스트
Azure Databases for PostgreSQL MYSQL and MariaDB
Open standard open cloud engine for digital business process
Cloudera session seoul - Spark bootcamp
SOSCON 2017 - Backend.AI
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
JMI Techtalk : Backend.AI
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
170426 cloud day in 포항 1. 클라우드컴퓨팅과 aws 소개_aws 이재현 매니저
DB관점에서 본 빅데이터 (2019년 8월)
디지털 미디어 산업을 위한 AWS 서비스 :: 홍두현 :: AWS Summit Seoul 2016
Ad

More from Daesung Park (8)

PDF
알아두면 쓸모있는 GPS 이야기
PDF
TechTalk - 개발환경설정 이야기
PPTX
TechTalk - 서버를 해킹 당했습니다
PPTX
TechTalk - POI Tokenizing
PDF
TechTalk - Object Interning
PPTX
TechTalk - DrawIO 팁
PDF
Python Dict을 남용하지 마세요
PPTX
DataWorks Summit 2017
알아두면 쓸모있는 GPS 이야기
TechTalk - 개발환경설정 이야기
TechTalk - 서버를 해킹 당했습니다
TechTalk - POI Tokenizing
TechTalk - Object Interning
TechTalk - DrawIO 팁
Python Dict을 남용하지 마세요
DataWorks Summit 2017
Ad

Spark Summit 2019

  • 2. SPARK+AI SUMMIT 2019 Koalas Scheduling Policies Nested Columns Recommendation System Design Structured Streaming Pipelines Data Pipelines Real-Time Analytics Neptune … Experienced Things
  • 3. SPARK+AI SUMMIT 2019 OVERVIEW ▸ 현장 이미지 ▸ What’s Next for Apache Spark ▸ Databricks Platforms ▸ Streaming Data Pipelines ▸ Other Sessions
  • 8. SPARK+AI SUMMIT 2019 SPARK 1.0 SPARK 2.0 2014 2016 SPARK 3.0 2019 (expected) 1000가지 이상의 기능 및 버그 수정 APACHE SPARK 3.0
  • 9. SPARK+AI SUMMIT 2019 APACHE SPARK DESIGN PRINCIPLES 1 Unify Data + AI 2 3 Run Everywhere Easy-to-use APIs
  • 10. SPARK+AI SUMMIT 2019 APACHE SPARK DESIGN PRINCIPLES 1 Unify Data + AI 2 3 Run Everywhere Easy-to-use APIs Spark MLLib PYTORCH TensorFlow mxnet CNTK … Tracking, Management
  • 11. SPARK+AI SUMMIT 2019 APACHE SPARK DESIGN PRINCIPLES 1 Unify Data + AI 2 3 Run Everywhere Easy-to-use APIs Spark Standalone Mode
  • 12. SPARK+AI SUMMIT 2019 APACHE SPARK DESIGN PRINCIPLES 1 Unify Data + AI 2 3 Run Everywhere Easy-to-use APIs 2013: APIs for data engineers 2015: APIs for data engineers & scientists
  • 13. SPARK+AI SUMMIT 2019 APACHE SPARK DESIGN PRINCIPLES 1 Unify Data + AI 2 3 Run Everywhere Easy-to-use APIs Typical journey of a Data Scientist Education, Analyze Small Datasets PANDAS SPARK Analyze Large Datasets Koalas - Pandas Dataframe API on Spark
  • 15. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ 데이터는 분석을 위해 준비되어 있지 않음 고객 데이터 클릭 이벤트 센서 데이터 이미지 데이터
  • 16. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ Delta Lake - Open Source Project 고객 데이터 클릭 이벤트 센서 데이터 이미지 데이터 Delta Lake ACID Transactions Unified Streaming & Batch Scalable Metadata handling Time Travel Schema enforcement
  • 17. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ 복잡한 람다-아키텍쳐를 단순화 시킴 Event
  • 18. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ 복잡한 람다-아키텍쳐를 단순화 시킴 Event
  • 19. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ 복잡한 람다-아키텍쳐를 단순화 시킴 Event df.write.format(“parquet”).save(“data”) df.write.format(“delta”).save(“data”)
  • 20. SPARK+AI SUMMIT 2019 DELTA LAKE ▸ Pros ▸ Full ACID Transactions 지원 ▸ 데이터 버저닝 ▸ 배치 & 스트리밍 통합 ▸ 기존 Apache Spark API와 100% 호환 ▸ 테이블 스키마 변경 가능 ▸ Cons ▸ Apache Spark 2.4.2 이상 지원 ▸ 읽기 성능을 높이기 위해 주기적으로 Compaction(Merge) 작업이 필요함. ▸ 일부 유용한 기능이 Managed 버전에서만 지원되고 OSS버전에선 사용할 수 없음.
 (향후 지원계획)
  • 21. SPARK+AI SUMMIT 2019 ML FLOW: OPEN SOURCE ML PLATFORM ▸ ML Lifecycle Raw Data Data Preparation Training Deployment
  • 22. SPARK+AI SUMMIT 2019 ML FLOW: OPEN SOURCE ML PLATFORM ▸ ML Lifecycle Raw Data Data Preparation Training Deployment AWS S3 Hadoop Delta Lake MongoDB Kafka … Apache Spark SQL Python Pandas Scikit-learn … Apache Spark PYTORCH XGBoost TensorFlow R … Docker Apache Spark AWS SageMaker Mobile Phone …. Model Exchange
  • 23. SPARK+AI SUMMIT 2019 ML FLOW: OPEN SOURCE ML PLATFORM ▸ Custom ML Platforms Facebook FBLearner Uber Michelangelo Google TFX Samsung Brightics AI Dataiku + ML Cycle 을 일반화 시켜서 그냥 가져다 쓰기만 하면 된다. - 알고리즘/프레임웍에 제약이 있거나 일부 도메인에만 유용할 수 있음
  • 24. SPARK+AI SUMMIT 2019 ML FLOW: OPEN SOURCE ML PLATFORM ▸ MLflow Tracking : experiment tracking ▸ MLflow Projects : reproducible runs ▸ MLflow Models : model packaging
  • 25. SPARK+AI SUMMIT 2019 ML FLOW: OPEN SOURCE ML PLATFORM mlflow.log_param(“lambda”, 0.5) mlflow.log_metric(“rmse”, 0.2) 아래와 같은 코드만 넣어주면 Managed by Databricks Docs : mlflow.org
  • 27. SPARK+AI SUMMIT 2019 참고한 세션들 ▸ FIS - Life Is but a Stream ▸ SpotX - Spark Streaming ▸ COMCAST - Winning the Audience With AI ▸ Databricks - Productizing Structured Streaming Jobs ▸ Spark Commiter - Designing Structured Streaming Pipelines ▸ Eventbrite - Near Real-Time Analytics With Apache Spark ▸ Sparkflows.Io - Self-Service Apache Spark Structured Streaming Applications & Analytics
  • 28. SPARK+AI SUMMIT 2019 CASE: FIS GLOBAL ▸ 1968년 창립된 직원수 53,000명의 금융 소프트웨어를 만드는 기업 ▸ 주 고객은 은행과 금융회사 BUSINESS INTELLIGENCE HYBRID ETL PURE STREAMING
  • 29. SPARK+AI SUMMIT 2019 CASE: FIS GLOBAL 초창기 파이프라인 STREAMING EVOLUTION
  • 30. SPARK+AI SUMMIT 2019 CASE: FIS GLOBAL ▸ 이후 Streaming 샘플을 Databricks Platform으로 보여줌 ▸ https://github.com/KevenMellott91/spark-summit-2019-demo
  • 31. SPARK+AI SUMMIT 2019 CASE: SPOTX ▸ Spark Streaming, DStream, Structured Streaming를 설명 ▸ 개발 시, Small Datasets을 가지고 Local Mode에서 개발하는 것을 강조함 ▸ 개발도구는 IntelliJ와 SBT를 추천함 ▸ 테스팅은 .queueStream() 과 같은 유닛 테스트를 진행 ▸ 모니터링은 리스너를 오버라이딩하여 mysql, influxdb, grafana를 통해 모니터링 ▸ Kafka Offset 관리는 배치완료 리스너를 오버라이딩 하여 MySQL에 offset을 기록하 고 읽어올 수 있도록 하였음 ▸ 몇가지 유용한 설정들 공유 ▸ kafka의 auto commit off, rdd.compress, spark.storage.memoryFraction …
  • 32. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 세계에서 가장 큰 케이블 텔레비전 방송사 및 ISP ▸ 음성으로 컨텐츠를 찾아주는데 많은 어려움이 있음 ▸ 고객의 의도를 파악하기 어려움 ▸ 초당 수십억개의 세션과 수백만의 트랜잭션이 발생 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) 초창기 파이프라인
  • 33. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 그렇게 서버가 터졌습니다! 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) 초당 1500만 트랜젝션 발생 AWS S3는 초당 3,500건의 제한이 있음
  • 34. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 2차 시도 (분산처리) 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) S3 S3 S3 S3 키로 분산 저장 … … “이제 잘될거야!” 640 Machines 32Jobs (2.5 PB) key=1 key=2 key=3
  • 35. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 2차 시도 (분산처리): 그리고 서버가 터지기 시작합니다. 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) S3 ERR S3 S3 키로 분산 저장 … … 640Machines 32Jobs (2.5 PB) key=1 key=2 key=3 COMPLEX!! FREQUENT FAILURES!! UNMANAGEABLE!!
  • 36. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 3차 시도 (Delta Lake): Scale, Reliability, Performance 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) S3 Auto Optimize Delta Lake Single Job 64 Machines Enable Random Prefix = No more Key Management S3 Delta Lake Auto Optimize Delta Lake Enable Random Prefix
  • 37. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 3차 시도 (Delta Lake): Scale, Reliability, Performance 데이터 수집 처리 (전처리) 세션화 (분석) 최적화 (저장/배포) S3 Auto Optimize Delta Lake Single Job 64Machines Enable Random Prefix = No more Key Management S3 Delta Lake Auto Optimize Delta Lake Enable Random Prefix
  • 38. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 추가적인 문제: Complex Development Environment of ML 다양한 개발 환경 PB 단위의 방대한 데이터 100여가지의 많은 모델 데이터 과학자가 세계에 퍼져있음 PYTORCH XGBoost Scikit-Learn + SLOW ITERATION
  • 39. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ SELF-SERVICE AI PYTORCH XGBoost Scikit-Learn Delta Lake 데이터는 Delta Lake로 개발도구 간의 Data Replication 을 최소화 학습 모델은 Databricks Workspace로 Notebook 편집 모드로 모델 작성/개발 모델은 mlflow로 Tracking, Packaging 완성된 모델은 Kubeflow로 상용 서비스로 배포, 적용 클릭 1번으로 실행, 코드 재사용, 추적, 배포
  • 40. SPARK+AI SUMMIT 2019 CASE: COMCAST ▸ 신뢰성 확보: PB 단위의 데이터를 처리하면서 에러가 발생하지 않음 ▸ 인스턴스 10배 감소: 640 -> 64! ▸ 팀 생산성 향상: 전세계의 데이터 과학자들이 협업 ▸ 빠른 적용: 몇 주 걸리던 배포가 5분만에 가능해짐
  • 41. SPARK+AI SUMMIT 2019 CASE: DATABRICKS ▸ Structured Streaming 에 대한 전반적인 설명을 함
 (구축/테스팅/모니터링/배포) ▸ Data Pipelines @ Databricks
  • 42. SPARK+AI SUMMIT 2019 CASE: DATABRICKS ▸ Bronze Table ▸ 데이터를 가공하진 않고, 중복제거와 JSON으로 변환하여 Parquet Format으로 저장 ▸ 만약의 경우를 대비하여 데이터에 오류가 있으면 수정하기 위해 2주 가량 보관 ▸ Silver Table ▸ 10/100 개의 직접적인 쿼리를 날릴수 있는 테이블 ▸ 개인정보 등을 마스킹하고 일부 교정된 데이터를 저장함 ▸ Gold Table ▸ Silver Table로 부터 연산/집계된 테이블 ▸ 데이터 사이언스 팀으로부터 만들어짐
  • 43. SPARK+AI SUMMIT 2019 DESIGNING STRUCTURED STREAMING PIPELINES ▸ Tathagata Das (Spark Committer, PMC) Spark는 자동으로 batch-like 하도록 실행 계획을 최적화 함
  • 44. SPARK+AI SUMMIT 2019 DESIGNING STRUCTURED STREAMING PIPELINES ▸ Streaming Pipelines을 설계할 때는 3가지의 질문을 던져야함 How? What? Why? 데이터는 무슨 데이터인가? 무슨 결과가 나와야 하는가? 얼마나 빠른 응답이 요구되는가? 처리량은 얼마나 되는가? 왜 스트리밍으로 처리해야하는가? 결과는 누구(사람/컴퓨터)를 위한 건가? 언제 사용되는 결과인가? 어떻게 데이터를 처리할 것인가? 어떻게 결과를 저장할 것인가?
  • 45. SPARK+AI SUMMIT 2019 “나는 대시보드의 숫자를 매 초마다 업데이트 하길 원해” WHY? 에서 이뤄지는 일반적인 실수 사람이 몇 분/시간 안에 행동을 취한다면 매 초마다 업데이트 할 필요가 없음 “나는 매 초마다 장애를 진단하기 위해서 만들거야” (하지만 내 데이터는 자주 장애가 발생 해) 낮은 품질의 데이터와 결과에 대한 신속한 조치를 할 필요가 없음 (데이터는 key-value 스토어에 쌓고 있어) “데이터를 머신러닝 학습에 사용할 거야” Key-value 스토어는 데이터 스캔 작업으로 인해 큰 데이터를 처리하는데 적합하지 않음
  • 46. SPARK+AI SUMMIT 2019 DESIGNING STRUCTURED STREAMING PIPELINES ▸ Streaming Design Patterns How? What? Why?
  • 47. SPARK+AI SUMMIT 2019 DESIGNING STRUCTURED STREAMING PIPELINES ▸ Streaming Design Patterns How? What? Why? 비정형 데이터를 구조적 테이블 데이터로 변환할거야 Latency : few minutes 구조화된 최신의 데이터를 인터렉티브하게 질의하거나, 배치 작업에 사용해야 해 Structured Streaming을 사용하여 데이터를 정형화 저장은 확장 가능한 구조적 스토리지를 사용 할 것. Data Skipping 지원이 필요. => Parquet, ORC, Delta Lake, or even better
  • 49. SPARK+AI SUMMIT 2019 TensorFlow 2.0 ▸ TensorFlow 2.0 High Level API - Keras ▸ Improved Debugger with Eager Execution ▸ Distribute Strategy - Easy to use Training on Multiple GPU ▸ Deploy Anywhere ▸ Server - TensorFlow Extended ▸ Edge Devices (Mobile) - TensorFlow Lite ▸ JavaScript - TensorFlow .JS
  • 50. SPARK+AI SUMMIT 2019 Geospatial Analytics at Scale with Deep Learning and Apache Spark ▸ Databricks 에서 발표 ▸ 대용량 위성사진(타일 이미지)을 딥러닝을 이용하여 자동차를 인식하고 이를 처리하여 지도에 히트맵 형태로 뿌려주는 과정을 이야기 ▸ Magellan 을 소개
  • 51. SPARK+AI SUMMIT 2019 Geospatial Analytics…: Magellan ▸ Geospatial 분석을 위한 분산 실행 엔진 오픈소스 라이브러리 ▸ 다양한 포맷을 지원 ▸ ESRI, GeoJSON, OSM-XML, WKT ▸ 기본적인 지오메트릭 연산을 수행가능함 ▸ Polygon intersection, Joining ▸ Spark SQL 엔진에 통합되어 높은 퍼포먼스로 인덱스를 생성함
  • 52. SPARK+AI SUMMIT 2019 Geospatial Analytics…: Magellan https://github.com/harsha2010/magellan
  • 53. SPARK+AI SUMMIT 2019 ETC ▸ Microsoft - Black in AI ▸ KPMG - Overview of the Recommend System ▸ Apple - Nested Columns Support in Parquet ▸ Netflex - Recommendation System “Taste Cluster” ▸ Neptune: Extended DAG Scheduler @ Spark 2.4 extension ▸ DASK - Distribution Parallel Computing in Python
  • 54. SPARK+AI SUMMIT 2019 SUMMARY ▸ 세션들의 난이도는 쉬운 편 ▸ 기초적인 설명과 사례 예시를 많이 들어줬음 ▸ Apache Spark를 위한 Summit ▸ Spark의 큰 변화가 있을 것으로 예상 ▸ Hive 3의 변화처럼 큰 변화가 계속 진행 중임
 Spark 2.3과 2.4의 차이도 매우 커짐 ▸ 앞으로도 Spark의 인기는 지속될 것으로 보임 ▸ Structured Streaming이 너무 강력함.
 쉬운 Lambda 아키텍쳐 구현이 가능.