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
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
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
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 스토어는
데이터 스캔 작업으로 인해
큰 데이터를 처리하는데 적합하지 않음
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 엔진에 통합되어 높은 퍼포먼스로 인덱스를 생성함
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 아키텍쳐 구현이 가능.