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

PDF
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
PDF
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
PDF
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
PDF
Data Engineering 101
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
PDF
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
PDF
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
PPTX
로그 기깔나게 잘 디자인하는 법
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Data Engineering 101
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
BigQuery의 모든 것(기획자, 마케터, 신입 데이터 분석가를 위한) 입문편
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
로그 기깔나게 잘 디자인하는 법

What's hot (20)

PPTX
Data pipeline and data lake
PDF
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
PDF
글쓰는 개발자 모임, 글또
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PDF
[236] 카카오의데이터파이프라인 윤도영
PDF
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
PPTX
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
PDF
데이터가 흐르는 조직 만들기 - 마이리얼트립
PDF
인프런 - 스타트업 인프랩 시작 사례
PDF
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
PDF
개발자를 위한 (블로그) 글쓰기 intro
PDF
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
Data Science. Intro
PDF
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
PDF
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
PDF
MOBILITY X DATA : 모빌리티 산업의 도전 과제
PDF
AWS CLOUD 2017 - Amazon Athena 및 Glue를 통한 빠른 데이터 질의 및 처리 기능 소개 (김상필 솔루션즈 아키텍트)
Data pipeline and data lake
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
글쓰는 개발자 모임, 글또
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[236] 카카오의데이터파이프라인 윤도영
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
[DevGround] 린하게 구축하는 스타트업 데이터파이프라인
데이터가 흐르는 조직 만들기 - 마이리얼트립
인프런 - 스타트업 인프랩 시작 사례
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
개발자를 위한 (블로그) 글쓰기 intro
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
PlaySQLAlchemy: SQLAlchemy入門
Data Science. Intro
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
MOBILITY X DATA : 모빌리티 산업의 도전 과제
AWS CLOUD 2017 - Amazon Athena 및 Glue를 통한 빠른 데이터 질의 및 처리 기능 소개 (김상필 솔루션즈 아키텍트)
Ad

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

PDF
빅데이터 기술 현황과 시장 전망(2014)
PDF
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
PPTX
[경북] I'mcloud information
PDF
빅데이터, big data
PPTX
An introduction to hadoop
PDF
OpenSource Big Data Platform : Flamingo Project
PDF
OpenSource Big Data Platform - Flamingo v7
PDF
Flamingo project v4
PDF
OpenSource Big Data Platform - Flamingo 소개와 활용
PPT
Big Data Overview
PPTX
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
PPTX
Tajo and SQL-on-Hadoop in Tech Planet 2013
PDF
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
PDF
Data in Motion Tour Seoul 2024 - Roadmap Demo
PPTX
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
PDF
SPARK SQL
PPTX
대용량 로그분석 Bigquery로 간단히 사용하기
PDF
ksqlDB로 실시간 데이터 변환 및 스트림 처리
PDF
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
PPTX
Hybrid & Logical Data Warehouse
빅데이터 기술 현황과 시장 전망(2014)
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
[경북] I'mcloud information
빅데이터, big data
An introduction to hadoop
OpenSource Big Data Platform : Flamingo Project
OpenSource Big Data Platform - Flamingo v7
Flamingo project v4
OpenSource Big Data Platform - Flamingo 소개와 활용
Big Data Overview
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Tajo and SQL-on-Hadoop in Tech Planet 2013
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
Data in Motion Tour Seoul 2024 - Roadmap Demo
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
SPARK SQL
대용량 로그분석 Bigquery로 간단히 사용하기
ksqlDB로 실시간 데이터 변환 및 스트림 처리
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
Hybrid & Logical Data Warehouse
Ad

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