SlideShare a Scribd company logo
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
감사합니다 !!!

More Related Content

What's hot

[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
Seongyun Byeon
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
if kakao
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Ji-Woong Choi
 
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
Seongyun Byeon
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
Jeongsang Baek
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
DaeMyung Kang
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Amazon Web Services Korea
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
AWSKRUG - AWS한국사용자모임
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
Jin wook
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
NAVER D2
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
NAVER D2
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
Jaikwang Lee
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
Juhong Park
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
종민 김
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
Brian Hong
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
DaeMyung Kang
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
NAVER D2
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
SANG WON PARK
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 

What's hot (20)

[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 

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

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
Jinwoong Kim
 
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한국사용자모임
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
Gruter
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
Daegeun Kim
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-Cloud
Jinwook 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#2
Juwon Kim
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
SeungYong Baek
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
Lablup 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 AWS
Matthew (정재화)
 
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
Jude Kim
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
I Goo Lee
 
Planning poker with jetpack
Planning poker with jetpackPlanning poker with jetpack
Planning poker with jetpack
SooHwan 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 AWS
Gruter
 

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

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
 
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
 
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