SlideShare una empresa de Scribd logo
1 de 46
BigQuery와 Airflow를 이용한
데이터 분석 시스템 구축
나무기술㈜ 최유석
VISION 1111
• 빅데이터 분석
• 오늘의 주제
구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축
• 구축 과정
• Airflow를 이용한 자동화
• 구성 모듈 소개
• Q & A
Contents
빅데이터 분석
빅데이터 분석 파이프라인
빅데이터 분석 과정
데이터 원천
모바일
웹
내부시스템
API
Server
Message
Queue
Streaming
Framework
< Realtime Processing >
Storage
Batch
Processing
Data
Warehouse
< Data Lake & Batch >
Data
Result
시각화 활용
의사결정 마케팅 전략수립
데이터 수집/분석
외부시스템
Dash board
< Data Analytics >
오픈소스 기반의 빅데이터 분석 아키텍처
Jupyter
notebook
Zeppelin
Hadoop MR
Spark
Kafka
Linux
Hadoop HDFS
< Batch >
Spark streaming
< Realtime Processing >
Visualization
설치, 운영, 관리의 어려움
• 학습
• 설치
• 개발
• 배포
• 운영
• 모니터링
• 장애 처리
• 성능 튜닝
구글 클라우드 기반 데이터 분석 파이프라인
< Data Lake & Batch >
< Realtime Processing >
데이터 원천 데이터 분석 시각화
OR
AppEngine
Compute
Engine
Cloud
Function
Pub/Sub Dataflow
Cloud
Storage
Data
flow
Data
proc
BigQuery
Datalab
Datastudio
Client
ETC
클라우드 기반의 빅데이터 분석
Cloud Scale InfrastructureNoOps
데이터 분석에 집중하여
인사이트를 얻는데 초점을 맞출 수 있다.
+
오늘의 주제
구글 빅쿼리와 아파치 에어플로우를
이용한 데이터 분석 시스템 구축
Visualization Data
Data Studio Datalab
활용한 데이터
https://cilab.sejong.ac.kr/gdmc2017/
㈜ 엔씨소프트 Blade & Soul
● 데이터
○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터
○ 대회 결과 데이터
● 로그 데이터 파일 수 : 총 1만개
● 데이터 크기
○ 원본 - 총 146GB
○ GZIP압축 후 - 총 10.7GB
● 데이터 포맷
○ CSV
● 스키마 컬럼수
○ 75개
● 데이터 타입 구성
○ String, Integer, Timestamp
활용한 데이터 정보
구현할 아키텍처
RDBMS
ETL
Server
Storage
Data
warehouse
Visualization
CSV
Data Source Data Lake & Batch Reporting
Scheduler &
Triggers
Data Pipeline
Logdata
Cloud SQL
(MySQL)
GCE (Embulk)
GCS
BigQuery
DataStudio
Airflow
Demo
GCE Cloud Storage BigQuery
Cloud Datalab
ETC
Log Data gsutil bq
Scheduling & Triggers
Query
Data Pipeline
Reporting Services
Data Studio
Cloud SQL
구현 아키텍처
GCE
디자인 컨셉
● 잘 아는 것을 활용 → Google Cloud Platform
● 빅데이터 분석 성능 → BigQuery
● 데이터 ETL 처리(Batch)및 전송 → Embulk
● 데이터 분석 파이프라인의 자동화 및 모니터링 → Airflow
● 범용적인 아키텍처
● 개발 및 Learning curve 최소화
구축 과정
로그데이터 다운로드 및 파악
Logdata.csv
GCE
X4000 X3000 X3000
TrainDATA TestDATA1 TestDATA2
BigQuery에 데이터 적재가 끝난 상태에서 구성 추가
MySQL에 원본 데이터 저장하기
$ gsutil –m compose gs://game-data-source/export-data/testdata1/* 
gs://game-data-source/merge-data/testdata1.csv
Cloud SQL
BigQuery
Cloud Storage
데이터 처리(ETL) 서버 구성하기
$ sudo apt-get update && sudo apt-get install default-jre
$ embulk gem install embulk-input-mysql
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-
latest.jar"
$ chmod +x ~/.embulk/bin/embulk
$ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
+
GCE
MySQL에서 데이터 가져오기
Cloud SQL
GCE
스토리지에 가져온 데이터 저장하기
$ gsutil -m -o GSUtil:parallel_composite_upload_threshold=10M 
cp -c <data_source_path/*> <Destination GCS URI>
GCE
Cloud Storage
빅쿼리에 데이터 저장하기
$ bq load --source_format=CSV --skip_leading_rows=1 
<Project ID:DatasetID.TableID> <GCS Source*.gz> <Table schema or schema file>
Cloud Storage
GCE
BigQuery
DataStudio로 대시보드 만들기
Datalab으로 데이터 분석하기
Airflow를 이용한 자동화
에어플로우 설치
환경 변수 설정
$ export AIRFLOW_HOME=~/airflow
Airflow 설치
$ pip install airflow
DB 초기화
$ airflow initdb
웹 서버 실행
$ airflow webserver -p 8080
web browser
GCE
● 설정파일 수정 ($AIRFLOW_HOME/airflow.cfg)
● ETL 서버 SSH연결 설정
에어플로우 설정
...
# Are DAGs paused by default at creation // True -> False로 변경
dags_are_paused_at_creation = False
...
# Whether to load the examples that ship with Airflow. It's good to
# get started, but you probably want to set this to False in a production
# environment // True -> False로 변경
load_examples = False
...
● DAG(Directed Acyclic Graph) 파일 작성
에어플로우 워크플로우 만들기
에어플로우 실행
구축 과정에서 겪은 어려움
● 데이터 분석 전문가가 아니기 때문에
전체 시스템을 구성하는 데 중점을 둠
● Airflow, Embulk에 대한 자료가 적다
○ 공식 사이트
○ 구글 검색
○ 각종 커뮤니티(구글 그룹, 페이스북 그룹, 등)
○ 블로그
○ github
○ stackoverflow
○ slideshare
○ ETC
에어플로우 사용 팁
● 원격서버 SSH 커넥션 :
○ 웹 콘솔 Admin → Connection을 활용
● 원격서버 = Airflow서버
○ $PATH를 동일하게 구성
● Dag의 실행 시점
○ start_date에서 Interval시간을 뺀 시점에서 실행
○ start_date= datetime.now() 실행하면 에러남
● Method이해 (Python bitshift operators >>, <<)
○ upstream은 의존성을 가진 상위노드
○ downstream은 의존성을 가진 하위 노드
Embulk 사용 팁
● Input/Output 플러그인 사용
○ 사용할 외부 플러그인과 내장 플러그인의 옵션을 충분히 파
악
○ 플러그인과 옵션들의 적절한 조합을 찾기
● Embulk 데이터를 가져올 때 Timestamp를 String으로 형 변환
○ 소수점 값 처리
● Embulk CLI 명령 실행 시 Output 로그처리
○ embulk run –-log [output log파일] [실행할 .yml]
Google Cloud Storage 사용 팁
● 클래스 선택
○ Regional추천
● 로컬 ETL서버 환경
○ Outbound 방화벽 443포트(to GCS) 오픈
○ 네트워크 Outbound 대역폭 체크
● 정합성 체크 - Hash값 비교(md5, crc32c)
● 빅쿼리로 데이터 적재까지 고려
○ 데이터 파일을 미리 분할하여 업로드
○ UTF-8로 인코딩한 상태로 업로드
$ gsutil hash local-file $ gsutil ls –L GCS-File-URIcompare
빅쿼리 사용 팁
● 데이터 포맷
○ JSON, CSV, Avro 중 택 1
● 임시 테이블로 1차 적재 후 실제 테이블로 복사하기
● 빅쿼리 정합성 체크(카운트 쿼리로 레코드 수 비교)
● bq업로드 옵션의 적절한 활용
○ CSV Header제외하는 옵션(파일 분할 시 각각 Header 적용)
○ 스키마와 매칭 되지 않는 값 무시
$ bq load --skip_leading_rows=1 …
$ bq load --ignore_unknown_values
…
$ bq query 'SELECT count(*) FROM DatasetID.TableID’
구성 모듈 소개
BIgQuery
● 페타 바이트 급의 데이타 저장 및 분
석 (CF. 데이타 웨어 하우스) 기술
● 구글 메일,유투브등 구글 내부 서비스
데이타 저장 및 분석에 널리 사용됨
● 매니지드 서비스 “No Ops, No more
install, configuration, maintenance”
BIgQuery 특징
● SQL 문법 사용 (ANSI SQL 지원)
● Aggregation, Sorting, Join, Partitioning 지원
● No Ops
● 3 copy 기반의 안정성
● Batch loading & Streaming loading 모두 지원
● Easy to use
● 클라우드 스케일의 연산속도 (24000개의 CPU)
● 컬럼 DB
Airflow
● Airbnb에서 개발
● 현재는 아파치 재단의 인큐베이터 프로
젝트
● 데이터 워크 플로우 관리 도구
Airflow - 특징
● 파이썬 기반의 테스크 작성 가능
● 분산 환경 처리 지원
● 웹 UI 기반의 모니터링 기능 제공
Embulk
● 트레저 데이터에서 개발
● 오픈 소스 병렬 데이터 로더
● 각종 소스와의 데이터 통합
Embulk 특징
● 다양한 플러그인 제공
● 병렬 로딩 가능
● 파일 포맷 변환, 필드 형 변환, 필드 맵핑
● 스키마 예측
❏ VM(Instance) 서비스
❏ 저렴한 가격과 높은 성능
Data Studio
그 외 모듈 소개
42
❏ 오프젝트 스토리지 서비스
Cloud Storage Cloud SQL
Cloud Datalab
❏ 매니지드 RDBMS 서비스
(MySQL/PostgreSQL)
❏ 오픈소스 Jupyter 노트북
❏ 데이타 분석 및 리포팅 도구
❏ 무료
❏ 구글 리포팅 BI 서비스
❏ 비 개발자도 쉽게 리포트
❏ 무료
Compute Engine
추가로 해볼 것들
● Airflow GCP Operator
● Embulk 성능 최적화
● SSHOperator적용
● 분산 노드 처리
● Dag과 Task 병렬 처리
● 각각 다른 데이터 소스에서 BigQuery로 데이터 적재
Q & A
감사합니다 !!!

Más contenido relacionado

La actualidad más candente

Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인Jae Young Park
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...AWSKRUG - AWS한국사용자모임
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?Juhong Park
 
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정Seongyun Byeon
 
데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립승화 양
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축Juhong Park
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게Seongyun Byeon
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기Jaikwang Lee
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기Yan So
 

La actualidad más candente (20)

Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
 
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
 
데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기
 

Similar a Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912

AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020Jinwoong Kim
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudJinwook Chung
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2Juwon Kim
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control PlaneSeungYong Baek
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes창언 정
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Planning poker with jetpack
Planning poker with jetpackPlanning poker with jetpack
Planning poker with jetpackSooHwan Ok
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기Yeonhee Kim
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 

Similar a Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912 (20)

AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-Cloud
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Planning poker with jetpack
Planning poker with jetpackPlanning poker with jetpack
Planning poker with jetpack
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 

Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912

  • 1. BigQuery와 Airflow를 이용한 데이터 분석 시스템 구축 나무기술㈜ 최유석 VISION 1111
  • 2. • 빅데이터 분석 • 오늘의 주제 구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축 • 구축 과정 • Airflow를 이용한 자동화 • 구성 모듈 소개 • Q & A Contents
  • 4. 빅데이터 분석 파이프라인 빅데이터 분석 과정 데이터 원천 모바일 웹 내부시스템 API Server Message Queue Streaming Framework < Realtime Processing > Storage Batch Processing Data Warehouse < Data Lake & Batch > Data Result 시각화 활용 의사결정 마케팅 전략수립 데이터 수집/분석 외부시스템 Dash board < Data Analytics >
  • 5. 오픈소스 기반의 빅데이터 분석 아키텍처 Jupyter notebook Zeppelin Hadoop MR Spark Kafka Linux Hadoop HDFS < Batch > Spark streaming < Realtime Processing > Visualization
  • 6. 설치, 운영, 관리의 어려움 • 학습 • 설치 • 개발 • 배포 • 운영 • 모니터링 • 장애 처리 • 성능 튜닝
  • 7. 구글 클라우드 기반 데이터 분석 파이프라인 < Data Lake & Batch > < Realtime Processing > 데이터 원천 데이터 분석 시각화 OR AppEngine Compute Engine Cloud Function Pub/Sub Dataflow Cloud Storage Data flow Data proc BigQuery Datalab Datastudio Client ETC
  • 8. 클라우드 기반의 빅데이터 분석 Cloud Scale InfrastructureNoOps 데이터 분석에 집중하여 인사이트를 얻는데 초점을 맞출 수 있다. +
  • 9. 오늘의 주제 구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축
  • 12. ● 데이터 ○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터 ○ 대회 결과 데이터 ● 로그 데이터 파일 수 : 총 1만개 ● 데이터 크기 ○ 원본 - 총 146GB ○ GZIP압축 후 - 총 10.7GB ● 데이터 포맷 ○ CSV ● 스키마 컬럼수 ○ 75개 ● 데이터 타입 구성 ○ String, Integer, Timestamp 활용한 데이터 정보
  • 13. 구현할 아키텍처 RDBMS ETL Server Storage Data warehouse Visualization CSV Data Source Data Lake & Batch Reporting Scheduler & Triggers Data Pipeline Logdata Cloud SQL (MySQL) GCE (Embulk) GCS BigQuery DataStudio Airflow
  • 14. Demo
  • 15. GCE Cloud Storage BigQuery Cloud Datalab ETC Log Data gsutil bq Scheduling & Triggers Query Data Pipeline Reporting Services Data Studio Cloud SQL 구현 아키텍처 GCE
  • 16. 디자인 컨셉 ● 잘 아는 것을 활용 → Google Cloud Platform ● 빅데이터 분석 성능 → BigQuery ● 데이터 ETL 처리(Batch)및 전송 → Embulk ● 데이터 분석 파이프라인의 자동화 및 모니터링 → Airflow ● 범용적인 아키텍처 ● 개발 및 Learning curve 최소화
  • 18. 로그데이터 다운로드 및 파악 Logdata.csv GCE X4000 X3000 X3000 TrainDATA TestDATA1 TestDATA2
  • 19. BigQuery에 데이터 적재가 끝난 상태에서 구성 추가 MySQL에 원본 데이터 저장하기 $ gsutil –m compose gs://game-data-source/export-data/testdata1/* gs://game-data-source/merge-data/testdata1.csv Cloud SQL BigQuery Cloud Storage
  • 20. 데이터 처리(ETL) 서버 구성하기 $ sudo apt-get update && sudo apt-get install default-jre $ embulk gem install embulk-input-mysql $ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk- latest.jar" $ chmod +x ~/.embulk/bin/embulk $ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc + GCE
  • 22. 스토리지에 가져온 데이터 저장하기 $ gsutil -m -o GSUtil:parallel_composite_upload_threshold=10M cp -c <data_source_path/*> <Destination GCS URI> GCE Cloud Storage
  • 23. 빅쿼리에 데이터 저장하기 $ bq load --source_format=CSV --skip_leading_rows=1 <Project ID:DatasetID.TableID> <GCS Source*.gz> <Table schema or schema file> Cloud Storage GCE BigQuery
  • 27. 에어플로우 설치 환경 변수 설정 $ export AIRFLOW_HOME=~/airflow Airflow 설치 $ pip install airflow DB 초기화 $ airflow initdb 웹 서버 실행 $ airflow webserver -p 8080 web browser GCE
  • 28. ● 설정파일 수정 ($AIRFLOW_HOME/airflow.cfg) ● ETL 서버 SSH연결 설정 에어플로우 설정 ... # Are DAGs paused by default at creation // True -> False로 변경 dags_are_paused_at_creation = False ... # Whether to load the examples that ship with Airflow. It's good to # get started, but you probably want to set this to False in a production # environment // True -> False로 변경 load_examples = False ...
  • 29. ● DAG(Directed Acyclic Graph) 파일 작성 에어플로우 워크플로우 만들기
  • 31. 구축 과정에서 겪은 어려움 ● 데이터 분석 전문가가 아니기 때문에 전체 시스템을 구성하는 데 중점을 둠 ● Airflow, Embulk에 대한 자료가 적다 ○ 공식 사이트 ○ 구글 검색 ○ 각종 커뮤니티(구글 그룹, 페이스북 그룹, 등) ○ 블로그 ○ github ○ stackoverflow ○ slideshare ○ ETC
  • 32. 에어플로우 사용 팁 ● 원격서버 SSH 커넥션 : ○ 웹 콘솔 Admin → Connection을 활용 ● 원격서버 = Airflow서버 ○ $PATH를 동일하게 구성 ● Dag의 실행 시점 ○ start_date에서 Interval시간을 뺀 시점에서 실행 ○ start_date= datetime.now() 실행하면 에러남 ● Method이해 (Python bitshift operators >>, <<) ○ upstream은 의존성을 가진 상위노드 ○ downstream은 의존성을 가진 하위 노드
  • 33. Embulk 사용 팁 ● Input/Output 플러그인 사용 ○ 사용할 외부 플러그인과 내장 플러그인의 옵션을 충분히 파 악 ○ 플러그인과 옵션들의 적절한 조합을 찾기 ● Embulk 데이터를 가져올 때 Timestamp를 String으로 형 변환 ○ 소수점 값 처리 ● Embulk CLI 명령 실행 시 Output 로그처리 ○ embulk run –-log [output log파일] [실행할 .yml]
  • 34. Google Cloud Storage 사용 팁 ● 클래스 선택 ○ Regional추천 ● 로컬 ETL서버 환경 ○ Outbound 방화벽 443포트(to GCS) 오픈 ○ 네트워크 Outbound 대역폭 체크 ● 정합성 체크 - Hash값 비교(md5, crc32c) ● 빅쿼리로 데이터 적재까지 고려 ○ 데이터 파일을 미리 분할하여 업로드 ○ UTF-8로 인코딩한 상태로 업로드 $ gsutil hash local-file $ gsutil ls –L GCS-File-URIcompare
  • 35. 빅쿼리 사용 팁 ● 데이터 포맷 ○ JSON, CSV, Avro 중 택 1 ● 임시 테이블로 1차 적재 후 실제 테이블로 복사하기 ● 빅쿼리 정합성 체크(카운트 쿼리로 레코드 수 비교) ● bq업로드 옵션의 적절한 활용 ○ CSV Header제외하는 옵션(파일 분할 시 각각 Header 적용) ○ 스키마와 매칭 되지 않는 값 무시 $ bq load --skip_leading_rows=1 … $ bq load --ignore_unknown_values … $ bq query 'SELECT count(*) FROM DatasetID.TableID’
  • 37. BIgQuery ● 페타 바이트 급의 데이타 저장 및 분 석 (CF. 데이타 웨어 하우스) 기술 ● 구글 메일,유투브등 구글 내부 서비스 데이타 저장 및 분석에 널리 사용됨 ● 매니지드 서비스 “No Ops, No more install, configuration, maintenance”
  • 38. BIgQuery 특징 ● SQL 문법 사용 (ANSI SQL 지원) ● Aggregation, Sorting, Join, Partitioning 지원 ● No Ops ● 3 copy 기반의 안정성 ● Batch loading & Streaming loading 모두 지원 ● Easy to use ● 클라우드 스케일의 연산속도 (24000개의 CPU) ● 컬럼 DB
  • 39. Airflow ● Airbnb에서 개발 ● 현재는 아파치 재단의 인큐베이터 프로 젝트 ● 데이터 워크 플로우 관리 도구
  • 40. Airflow - 특징 ● 파이썬 기반의 테스크 작성 가능 ● 분산 환경 처리 지원 ● 웹 UI 기반의 모니터링 기능 제공
  • 41. Embulk ● 트레저 데이터에서 개발 ● 오픈 소스 병렬 데이터 로더 ● 각종 소스와의 데이터 통합
  • 42. Embulk 특징 ● 다양한 플러그인 제공 ● 병렬 로딩 가능 ● 파일 포맷 변환, 필드 형 변환, 필드 맵핑 ● 스키마 예측
  • 43. ❏ VM(Instance) 서비스 ❏ 저렴한 가격과 높은 성능 Data Studio 그 외 모듈 소개 42 ❏ 오프젝트 스토리지 서비스 Cloud Storage Cloud SQL Cloud Datalab ❏ 매니지드 RDBMS 서비스 (MySQL/PostgreSQL) ❏ 오픈소스 Jupyter 노트북 ❏ 데이타 분석 및 리포팅 도구 ❏ 무료 ❏ 구글 리포팅 BI 서비스 ❏ 비 개발자도 쉽게 리포트 ❏ 무료 Compute Engine
  • 44. 추가로 해볼 것들 ● Airflow GCP Operator ● Embulk 성능 최적화 ● SSHOperator적용 ● 분산 노드 처리 ● Dag과 Task 병렬 처리 ● 각각 다른 데이터 소스에서 BigQuery로 데이터 적재
  • 45. Q & A