데브시스터즈
박주홍
Spark, Flintrock, Airflow 로 구현하는
탄력적이고 유연한 데이터 분산처리
자동화 인프라 구축
오늘 전하고 싶은 이야기
- 데이터 엔지니어의
고민과 해결 과정
- 분산 처리 자동화
인프라의 큰 그림
오늘 나누고 싶은 주제
- Spark, Flintrock
탄력적인 클러스터 구축
- Airflow
유연한 분석 스케줄링
2017 ~ 현재 Data Science & Infrastructure 팀장
2015 ~ 2016 쿠키런 데이터 연구 및 인프라 개발
2013 – 2015 쿠키런 서버 개발
박주홍
Juhong Park
데이터란?
데이터 엔지니어의 입장에서
데이터란?
데이터 엔지니어의 입장에서
없으면 Bad
데이터란?
데이터 엔지니어의 입장에서
없으면
있으면
Bad
Good
데이터란?
데이터 엔지니어의 입장에서
없으면
있으면
아주 많으면
Bad
Good
Excellent
데이터란?
데이터 엔지니어의 입장에서
없으면
있으면
아주 많으면
끝 없이 많으면?
Bad
Good
Excellent
데이터란?
데이터 엔지니어의 입장에서
없으면
있으면
아주 많으면
끝 없이 많으면?
Bad
Good
Excellent
Disaster
$ python analysis.py?
Single Server – 1GB
No Problem.
$ python analysis.py?
Single Server – 1TB
Yes Problem.
Out of
- Server Memory
- Server Disk
$ python analysis.py?
Single Server – 1TB
Yes Problem.
Out of
- Server Memory
- Server Disk
- Your Time
$ python analysis.py?
Single Server – 1TB
Yes Problem.
Out of
- Server Memory
- Server Disk
- Your Time
- Your Mind
데이터 엔지니어링
≒
데이터 부하 분산
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
Spark, Flintrock
탄력적인 클러스터 구축
https://spark.apache.org
Reference: www.jenunderwood.com
Reference: www.jenunderwood.com
• 인기 있는 분산 처리 엔진
• 속도, 안전성 면에서 합격점
• 여러 플랫폼과의 호환 지원
• SQL, Dataframe 기반의 분석 지원
AWS EC2
Spark
AWS S3
Client
AS-IS
오늘 접속한 유저의
코인 보유량을 알고 싶어요
AWS EC2
Spark
2대
AWS S3
10GB
Client
Spark Cluster Launch
6분
지난주에 접속한 유저의
코인 보유량을 알고 싶어요
1일 X 7 = 1주일
10GB X 7 = 70GB
2대 X 7 = 14대
AWS EC2
Spark
14대
AWS S3
70GB
Client
6분 X 7 = 42분?
Spark Cluster Launch
주 단위 분석 할 때마다
42분을 기다려야 한다고?
AWS S3
Client
Spark Cluster Launch 2대
Spark3분
AWS S3
Client
Spark Cluster Launch 2대
Spark3분
Spark
3분
AWS S3
Client
Spark Cluster Launch 2대
Spark3분
Spark
3분
3분 X 2 = 6분
AWS S3
Client
Spark Cluster Launch 14대
Spark
3분
3분 X 14 = 42분
X 14
클러스터를 보다 빨리
띄울 수 없을까?
클러스터를 보다 빨리
ASYNC 하게
띄울 수 없을까?
클러스터를 보다 빨리
ASYNC 하게
띄울 수 없을까?
https://github.com/nchammas/flintrock
AWS S3
Client
Spark Cluster Launch
Spark3분
Spark
3분
3분 X 2 = 6분
AWS S3
Client
Spark
Spark
3분 X 1 = 3분!
Spark Cluster Launch – Flintrock
AWS S3
Client
Spark
3분 X 1 = 3분! < 42분
실제로는 각종 Overhead 로 5분 ~ 7분 소요
Spark Cluster Launch – Flintrock
X 14
ASYNC
AWS EC2
Spark
AWS S3
Client
AS-IS
AWS EC2
Spark
AWS S3
Client
TO-BE, Flintrock
ASYNC
14대의 클러스터로 작업 도중
최근 2주 동안 접속한 유저의
코인 보유량을 알고 싶어요
기존 14대 클러스터를
2배로 키우자!
클러스터를 2배로 키우는 방법
클러스터를 2배로 키우는 방법
• 첫번째 방법
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
• 두번째 방법
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
• 두번째 방법
1. 새로운 서버 14대를 띄운다.
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
• 두번째 방법
1. 새로운 서버 14대를 띄운다.
2. SSH 로 서버에 접속한다.
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
• 두번째 방법
1. 새로운 서버 14대를 띄운다.
2. SSH 로 서버에 접속한다.
3. 기존 Spark Cluster 에 연결되도록 Setting 을 잡아준다.
클러스터를 2배로 키우는 방법
• 첫번째 방법
1. 기존 14대 클러스터를 내린다.
2. 새로운 28대 클러스터를 띄운다.
우린 Flintrock 으로 빠르게 띄울 수 있으니까!
• 두번째 방법
1. 새로운 서버 14대를 띄운다.
2. SSH 로 서버에 접속한다.
3. 기존 Spark Cluster 에 연결되도록 Setting 을 잡아준다.
4. 2~3과정을 14번 반복한다.
서버를 추가하려면
14번의 노가다를 해야 한다고?
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
AWS EC2
Spark
AWS S3
Client
Add, Remove Slave
ASYNC
flintrock add-slaves spark-cluster --num-slaves 14
flintrock remove-slaves spark-cluster --num-slaves 14
add-slaves
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
• Async 하게 빠른 속도로 클러스터 구축
• CLI 기반으로 간편하게 클러스터 셋팅
• 분석 규모에 맞춰 클러스터 사이즈를
언제든 원하는 사이즈로 탄력적으로 조정
Airflow
유연한 분석 스케줄링
AWS EC2
Spark
AWS S3
Client
AS-IS
ASYNC
매일 아침에
국가별 매출액을
리포트 해주세요.
구매 로그환율 서버상품 정보
이메일 리포트
AWS EC2
Spark
Python
가격 달러 환산
Daily Report
그리고
매일 아침 출근해서
리포트를 생성
리포트 생성을
매일 아침마다 해야 한다고?
0 0 * * * = 0시 0분 = 매일 정각
구매 로그환율 서버상품 정보
이메일 리포트
AWS EC2
Spark
Python
가격 달러 환산
Daily Report – Cron
Daily
0 0 * * *
구매 로그환율 서버상품 정보
이메일 리포트
AWS EC2
Spark
Python
가격 달러 환산
Daily Report – Cron, Retry
Daily
0 0 * * *
구매 로그환율 서버상품 정보
이메일 리포트
AWS EC2
Spark
Python
가격 달러 환산
Daily Report – Cron, Failback
Daily
0 0 * * *
구매 로그환율 서버상품 정보
이메일 리포트
AWS EC2
Spark
Python
가격 달러 환산
Daily Report – Cron, Fail Report
Daily
실패 리포트0 0 * * *
• 주기적 분석 – Daily, Weekly, Monthly
• Retry 로직 생성
• Failback 및 Fail Report
분석 스케줄링에 필요한 기능
• 주기적 분석 – Daily, Weekly, Monthly
• Retry 로직 생성
• Failback 및 Fail Report
분석 스케줄링에 필요한 기능, Cron
Airflowhttps://airflow.apache.org
• 주기적 분석 – Daily, Weekly, Monthly
• Retry 로직 생성
• Failback 및 Fail Report
Airflow
Airflow
• 주기적 분석 – Daily, Weekly, Monthly
• Retry 로직 생성
• Failback 및 Fail Report
• 유연한 분석 의존 관계 관리
Airflow
유연한 분석 의존 관계 관리 – Dag
Reference: www.qubole.com
Airflow
Reference: danidelvalle.me
유연한 분석 의존 관계 관리 – Dag Graph
Airflow
Reference: danidelvalle.me
유연한 분석 의존 관계 관리 – Dag Graph
Reference: www.predictiveanalyticstoday.com
Airflow
유연한 분석 의존 관계 관리 – Job Control
Reference: www.qubole.com
• DAG(Directed acyclic graph) 단위 관리
• Graph 형태로 분석 파이프라인 시각화
• Job Group, Sub Dag 를 통한 유연한 구조 변경
• Job 단위로 상태 로깅, 에러 확인, 재시도
Airflow
유연한 분석 의존 관계 관리
Airflow
Airflow
탄력적인 클러스터 구축 유연한 분석 스케줄링
매일 아침에
국가별 매출액을
리포트 해주세요.
매월 1일에는
국가별 월매출액도
리포트해주세요.
매일 아침에
국가별 매출액을
리포트 해주세요.
매월 1일에는
국가별 월매출액도
리포트해주세요.
Spark
Cluster
2대
Spark
Cluster
16대
Airflow
Daily Report – Airflow
Airflow
Python
환율 계산
Daily Report – Airflow
Airflow
Python
환율 계산
Cluster
Launch
2대
Daily Report – Airflow
Airflow
Python
환율 계산 Daily
매출 계산
Cluster
Launch
2대
Daily Report – Airflow
Airflow
Python
환율 계산 Daily
매출 계산
Cluster
Launch
2대
add-slaves
14대
Daily Report – Airflow
Airflow
Python
환율 계산 Daily
매출 계산
Monthly
매출 계산
Cluster
Launch
2대
add-slaves
14대
Daily Report – Airflow
Airflow
Python
환율 계산 Daily
매출 계산
Monthly
매출 계산
Cluster
Launch
2대
add-slaves
14대
Daily Report – Airflow
Airflow
Python
환율 계산 Daily
매출 계산
Monthly
매출 계산
Cluster
Launch
2대
add-slaves
14대
Daily Report – Airflow
실패 리포트
AWS EC2
Spark
AWS S3
TO-BE
ASYNC
Airflow
add-slaves
Job Scheduling
오늘 이야기 마무리
AWS EC2
Spark
AWS S3
Client
AS-IS
AWS EC2
Spark
AWS S3
Client
TO-BE, Flintrock
ASYNC
add-slaves
탄력적인 클러스터 구축
AWS EC2
Spark
AWS S3
TO-BE, Airflow
ASYNC
Airflow
add-slaves
Job Scheduling
유연한 분석 스케줄링
마무리
 데이터 엔지니어링은
끝 없는 부하 분산만이 살길이다.
탄력적인 클러스터 사이즈 조절로
인프라 전반의 효율성 극대화하자.
유연한 분석 스케줄러를 도입하면
할 일이 절반으로 줄어든다.
We’re Hiring!
Data Science & Infrastructure
데이터 과학자
데이터 엔지니어
머신러닝 엔지니어
www.devsisters.com/jobs
감사합니다.
데브시스터즈
박주홍
J.Park@devsisters.com

More Related Content

PDF
[236] 카카오의데이터파이프라인 윤도영
PDF
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
PDF
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
PPTX
Data pipeline and data lake
PDF
[215] Druid로 쉽고 빠르게 데이터 분석하기
PDF
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PPTX
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
[236] 카카오의데이터파이프라인 윤도영
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
Data pipeline and data lake
[215] Druid로 쉽고 빠르게 데이터 분석하기
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인

What's hot (20)

PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
PPTX
로그 기깔나게 잘 디자인하는 법
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
Where狙いのキー、order by狙いのキー
PDF
Jenkins를 활용한 Openshift CI/CD 구성
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PPTX
Kubernetes専用データ保護に新たな潮流、Zerto?Kasten?の最新手法とは
PDF
인공지능추천시스템 airs개발기_모델링과시스템
PDF
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
PDF
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
PDF
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
PPTX
FIWARE Big Data Ecosystem : Cygnus
PPTX
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PPTX
Apache spark 소개 및 실습
PPTX
Hadoop -NameNode HAの仕組み-
PPT
インフラエンジニアのためのcassandra入門
PDF
SparkとCassandraの美味しい関係
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
로그 기깔나게 잘 디자인하는 법
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Where狙いのキー、order by狙いのキー
Jenkins를 활용한 Openshift CI/CD 구성
単なるキャッシュじゃないよ!?infinispanの紹介
Kubernetes専用データ保護に新たな潮流、Zerto?Kasten?の最新手法とは
인공지능추천시스템 airs개발기_모델링과시스템
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
FIWARE Big Data Ecosystem : Cygnus
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Apache spark 소개 및 실습
Hadoop -NameNode HAの仕組み-
インフラエンジニアのためのcassandra入門
SparkとCassandraの美味しい関係
Ad

Similar to [NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축 (20)

PPTX
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
PPTX
Spark streaming tutorial
PDF
AWS Aurora 운영사례 (by 배은미)
PDF
Apache Zeppelin으로 데이터 분석하기
PDF
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
PPTX
DataWorks Summit 2017
PDF
Cloud Taekwon 2015 - AWS를 활용한 로그 분석
PDF
MySQL Performance Tuning (In Korean)
PDF
지금 핫한 Real-time In-memory Stream Processing 이야기
PPTX
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
PPTX
Spark+Cassandra Data pipeline optimazation at recommend system for recommend ...
PPTX
Apache kafka 확장과 응용
PDF
SK planet Streaming system
PDF
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
PPTX
spark database Service
PPTX
1711 azure-live
PDF
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
PDF
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
PPTX
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
PDF
[KR] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Spark streaming tutorial
AWS Aurora 운영사례 (by 배은미)
Apache Zeppelin으로 데이터 분석하기
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
DataWorks Summit 2017
Cloud Taekwon 2015 - AWS를 활용한 로그 분석
MySQL Performance Tuning (In Korean)
지금 핫한 Real-time In-memory Stream Processing 이야기
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Spark+Cassandra Data pipeline optimazation at recommend system for recommend ...
Apache kafka 확장과 응용
SK planet Streaming system
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
spark database Service
1711 azure-live
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
[KR] Building modern data pipeline with Snowflake + DBT + Airflow.pdf
Ad

[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축