Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
BigQuery와 Airflow를 이용한
데이터 분석 시스템 구축
나무기술㈜ 최유석
VISION 1111
• 빅데이터 분석
• 오늘의 주제
구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축
• 구축 과정
• Airflow를 이용한 자동화
• 구성 모듈 소개
• Q & A
Contents
빅데이터 분석
빅데이터 분석 파이프라인
빅데이터 분석 과정
데이터 원천
모바일
웹
내부시스템
API
Server
Message
Queue
Streaming
Framework
< Realtime Processing >
Storage
B...
오픈소스 기반의 빅데이터 분석 아키텍처
Jupyter
notebook
Zeppelin
Hadoop MR
Spark
Kafka
Linux
Hadoop HDFS
< Batch >
Spark streaming
< Realti...
설치, 운영, 관리의 어려움
• 학습
• 설치
• 개발
• 배포
• 운영
• 모니터링
• 장애 처리
• 성능 튜닝
구글 클라우드 기반 데이터 분석 파이프라인
< Data Lake & Batch >
< Realtime Processing >
데이터 원천 데이터 분석 시각화
OR
AppEngine
Compute
Engine
Cloud
...
클라우드 기반의 빅데이터 분석
Cloud Scale InfrastructureNoOps
데이터 분석에 집중하여
인사이트를 얻는데 초점을 맞출 수 있다.
+
오늘의 주제
구글 빅쿼리와 아파치 에어플로우를
이용한 데이터 분석 시스템 구축
Visualization Data
Data Studio Datalab
활용한 데이터
https://cilab.sejong.ac.kr/gdmc2017/
㈜ 엔씨소프트 Blade & Soul
● 데이터
○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터
○ 대회 결과 데이터
● 로그 데이터 파일 수 : 총 1만개
● 데이터 크기
○ 원본 - 총 146GB
○ GZIP압축 후 - 총 10.7G...
구현할 아키텍처
RDBMS
ETL
Server
Storage
Data
warehouse
Visualization
CSV
Data Source Data Lake & Batch Reporting
Scheduler &
Tri...
Demo
GCE Cloud Storage BigQuery
Cloud Datalab
ETC
Log Data gsutil bq
Scheduling & Triggers
Query
Data Pipeline
Reporting Servic...
디자인 컨셉
● 잘 아는 것을 활용 → Google Cloud Platform
● 빅데이터 분석 성능 → BigQuery
● 데이터 ETL 처리(Batch)및 전송 → Embulk
● 데이터 분석 파이프라인의 자동화 및...
구축 과정
로그데이터 다운로드 및 파악
Logdata.csv
GCE
X4000 X3000 X3000
TrainDATA TestDATA1 TestDATA2
BigQuery에 데이터 적재가 끝난 상태에서 구성 추가
MySQL에 원본 데이터 저장하기
$ gsutil –m compose gs://game-data-source/export-data/testdata1/* 
gs:/...
데이터 처리(ETL) 서버 구성하기
$ sudo apt-get update && sudo apt-get install default-jre
$ embulk gem install embulk-input-mysql
$ cu...
MySQL에서 데이터 가져오기
Cloud SQL
GCE
스토리지에 가져온 데이터 저장하기
$ gsutil -m -o GSUtil:parallel_composite_upload_threshold=10M 
cp -c <data_source_path/*> <Destination ...
빅쿼리에 데이터 저장하기
$ bq load --source_format=CSV --skip_leading_rows=1 
<Project ID:DatasetID.TableID> <GCS Source*.gz> <Table ...
DataStudio로 대시보드 만들기
Datalab으로 데이터 분석하기
Airflow를 이용한 자동화
에어플로우 설치
환경 변수 설정
$ export AIRFLOW_HOME=~/airflow
Airflow 설치
$ pip install airflow
DB 초기화
$ airflow initdb
웹 서버 실행
$ airfl...
● 설정파일 수정 ($AIRFLOW_HOME/airflow.cfg)
● ETL 서버 SSH연결 설정
에어플로우 설정
...
# Are DAGs paused by default at creation // True -> F...
● DAG(Directed Acyclic Graph) 파일 작성
에어플로우 워크플로우 만들기
에어플로우 실행
구축 과정에서 겪은 어려움
● 데이터 분석 전문가가 아니기 때문에
전체 시스템을 구성하는 데 중점을 둠
● Airflow, Embulk에 대한 자료가 적다
○ 공식 사이트
○ 구글 검색
○ 각종 커뮤니티(구글 그룹, 페...
에어플로우 사용 팁
● 원격서버 SSH 커넥션 :
○ 웹 콘솔 Admin → Connection을 활용
● 원격서버 = Airflow서버
○ $PATH를 동일하게 구성
● Dag의 실행 시점
○ start_date에서 ...
Embulk 사용 팁
● Input/Output 플러그인 사용
○ 사용할 외부 플러그인과 내장 플러그인의 옵션을 충분히 파
악
○ 플러그인과 옵션들의 적절한 조합을 찾기
● Embulk 데이터를 가져올 때 Timesta...
Google Cloud Storage 사용 팁
● 클래스 선택
○ Regional추천
● 로컬 ETL서버 환경
○ Outbound 방화벽 443포트(to GCS) 오픈
○ 네트워크 Outbound 대역폭 체크
● 정합성...
빅쿼리 사용 팁
● 데이터 포맷
○ JSON, CSV, Avro 중 택 1
● 임시 테이블로 1차 적재 후 실제 테이블로 복사하기
● 빅쿼리 정합성 체크(카운트 쿼리로 레코드 수 비교)
● bq업로드 옵션의 적절한 활용...
구성 모듈 소개
BIgQuery
● 페타 바이트 급의 데이타 저장 및 분
석 (CF. 데이타 웨어 하우스) 기술
● 구글 메일,유투브등 구글 내부 서비스
데이타 저장 및 분석에 널리 사용됨
● 매니지드 서비스 “No Ops, No mo...
BIgQuery 특징
● SQL 문법 사용 (ANSI SQL 지원)
● Aggregation, Sorting, Join, Partitioning 지원
● No Ops
● 3 copy 기반의 안정성
● Batch load...
Airflow
● Airbnb에서 개발
● 현재는 아파치 재단의 인큐베이터 프로
젝트
● 데이터 워크 플로우 관리 도구
Airflow - 특징
● 파이썬 기반의 테스크 작성 가능
● 분산 환경 처리 지원
● 웹 UI 기반의 모니터링 기능 제공
Embulk
● 트레저 데이터에서 개발
● 오픈 소스 병렬 데이터 로더
● 각종 소스와의 데이터 통합
Embulk 특징
● 다양한 플러그인 제공
● 병렬 로딩 가능
● 파일 포맷 변환, 필드 형 변환, 필드 맵핑
● 스키마 예측
❏ VM(Instance) 서비스
❏ 저렴한 가격과 높은 성능
Data Studio
그 외 모듈 소개
42
❏ 오프젝트 스토리지 서비스
Cloud Storage Cloud SQL
Cloud Datalab
❏ 매니지드 R...
추가로 해볼 것들
● Airflow GCP Operator
● Embulk 성능 최적화
● SSHOperator적용
● 분산 노드 처리
● Dag과 Task 병렬 처리
● 각각 다른 데이터 소스에서 BigQuery로 데...
Q & A
감사합니다 !!!
Prochain SlideShare
Chargement dans…5
×

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

9월 12일 구글 클라우드 데이 @ 판교 에서 구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축이라는 주제로 발표한 자료입니다.

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

  1. 1. BigQuery와 Airflow를 이용한 데이터 분석 시스템 구축 나무기술㈜ 최유석 VISION 1111
  2. 2. • 빅데이터 분석 • 오늘의 주제 구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축 • 구축 과정 • Airflow를 이용한 자동화 • 구성 모듈 소개 • Q & A Contents
  3. 3. 빅데이터 분석
  4. 4. 빅데이터 분석 파이프라인 빅데이터 분석 과정 데이터 원천 모바일 웹 내부시스템 API Server Message Queue Streaming Framework < Realtime Processing > Storage Batch Processing Data Warehouse < Data Lake & Batch > Data Result 시각화 활용 의사결정 마케팅 전략수립 데이터 수집/분석 외부시스템 Dash board < Data Analytics >
  5. 5. 오픈소스 기반의 빅데이터 분석 아키텍처 Jupyter notebook Zeppelin Hadoop MR Spark Kafka Linux Hadoop HDFS < Batch > Spark streaming < Realtime Processing > Visualization
  6. 6. 설치, 운영, 관리의 어려움 • 학습 • 설치 • 개발 • 배포 • 운영 • 모니터링 • 장애 처리 • 성능 튜닝
  7. 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. 8. 클라우드 기반의 빅데이터 분석 Cloud Scale InfrastructureNoOps 데이터 분석에 집중하여 인사이트를 얻는데 초점을 맞출 수 있다. +
  9. 9. 오늘의 주제 구글 빅쿼리와 아파치 에어플로우를 이용한 데이터 분석 시스템 구축
  10. 10. Visualization Data Data Studio Datalab
  11. 11. 활용한 데이터 https://cilab.sejong.ac.kr/gdmc2017/ ㈜ 엔씨소프트 Blade & Soul
  12. 12. ● 데이터 ○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터 ○ 대회 결과 데이터 ● 로그 데이터 파일 수 : 총 1만개 ● 데이터 크기 ○ 원본 - 총 146GB ○ GZIP압축 후 - 총 10.7GB ● 데이터 포맷 ○ CSV ● 스키마 컬럼수 ○ 75개 ● 데이터 타입 구성 ○ String, Integer, Timestamp 활용한 데이터 정보
  13. 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. 14. Demo
  15. 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. 16. 디자인 컨셉 ● 잘 아는 것을 활용 → Google Cloud Platform ● 빅데이터 분석 성능 → BigQuery ● 데이터 ETL 처리(Batch)및 전송 → Embulk ● 데이터 분석 파이프라인의 자동화 및 모니터링 → Airflow ● 범용적인 아키텍처 ● 개발 및 Learning curve 최소화
  17. 17. 구축 과정
  18. 18. 로그데이터 다운로드 및 파악 Logdata.csv GCE X4000 X3000 X3000 TrainDATA TestDATA1 TestDATA2
  19. 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. 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
  21. 21. MySQL에서 데이터 가져오기 Cloud SQL GCE
  22. 22. 스토리지에 가져온 데이터 저장하기 $ gsutil -m -o GSUtil:parallel_composite_upload_threshold=10M cp -c <data_source_path/*> <Destination GCS URI> GCE Cloud Storage
  23. 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
  24. 24. DataStudio로 대시보드 만들기
  25. 25. Datalab으로 데이터 분석하기
  26. 26. Airflow를 이용한 자동화
  27. 27. 에어플로우 설치 환경 변수 설정 $ export AIRFLOW_HOME=~/airflow Airflow 설치 $ pip install airflow DB 초기화 $ airflow initdb 웹 서버 실행 $ airflow webserver -p 8080 web browser GCE
  28. 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. 29. ● DAG(Directed Acyclic Graph) 파일 작성 에어플로우 워크플로우 만들기
  30. 30. 에어플로우 실행
  31. 31. 구축 과정에서 겪은 어려움 ● 데이터 분석 전문가가 아니기 때문에 전체 시스템을 구성하는 데 중점을 둠 ● Airflow, Embulk에 대한 자료가 적다 ○ 공식 사이트 ○ 구글 검색 ○ 각종 커뮤니티(구글 그룹, 페이스북 그룹, 등) ○ 블로그 ○ github ○ stackoverflow ○ slideshare ○ ETC
  32. 32. 에어플로우 사용 팁 ● 원격서버 SSH 커넥션 : ○ 웹 콘솔 Admin → Connection을 활용 ● 원격서버 = Airflow서버 ○ $PATH를 동일하게 구성 ● Dag의 실행 시점 ○ start_date에서 Interval시간을 뺀 시점에서 실행 ○ start_date= datetime.now() 실행하면 에러남 ● Method이해 (Python bitshift operators >>, <<) ○ upstream은 의존성을 가진 상위노드 ○ downstream은 의존성을 가진 하위 노드
  33. 33. Embulk 사용 팁 ● Input/Output 플러그인 사용 ○ 사용할 외부 플러그인과 내장 플러그인의 옵션을 충분히 파 악 ○ 플러그인과 옵션들의 적절한 조합을 찾기 ● Embulk 데이터를 가져올 때 Timestamp를 String으로 형 변환 ○ 소수점 값 처리 ● Embulk CLI 명령 실행 시 Output 로그처리 ○ embulk run –-log [output log파일] [실행할 .yml]
  34. 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. 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’
  36. 36. 구성 모듈 소개
  37. 37. BIgQuery ● 페타 바이트 급의 데이타 저장 및 분 석 (CF. 데이타 웨어 하우스) 기술 ● 구글 메일,유투브등 구글 내부 서비스 데이타 저장 및 분석에 널리 사용됨 ● 매니지드 서비스 “No Ops, No more install, configuration, maintenance”
  38. 38. BIgQuery 특징 ● SQL 문법 사용 (ANSI SQL 지원) ● Aggregation, Sorting, Join, Partitioning 지원 ● No Ops ● 3 copy 기반의 안정성 ● Batch loading & Streaming loading 모두 지원 ● Easy to use ● 클라우드 스케일의 연산속도 (24000개의 CPU) ● 컬럼 DB
  39. 39. Airflow ● Airbnb에서 개발 ● 현재는 아파치 재단의 인큐베이터 프로 젝트 ● 데이터 워크 플로우 관리 도구
  40. 40. Airflow - 특징 ● 파이썬 기반의 테스크 작성 가능 ● 분산 환경 처리 지원 ● 웹 UI 기반의 모니터링 기능 제공
  41. 41. Embulk ● 트레저 데이터에서 개발 ● 오픈 소스 병렬 데이터 로더 ● 각종 소스와의 데이터 통합
  42. 42. Embulk 특징 ● 다양한 플러그인 제공 ● 병렬 로딩 가능 ● 파일 포맷 변환, 필드 형 변환, 필드 맵핑 ● 스키마 예측
  43. 43. ❏ VM(Instance) 서비스 ❏ 저렴한 가격과 높은 성능 Data Studio 그 외 모듈 소개 42 ❏ 오프젝트 스토리지 서비스 Cloud Storage Cloud SQL Cloud Datalab ❏ 매니지드 RDBMS 서비스 (MySQL/PostgreSQL) ❏ 오픈소스 Jupyter 노트북 ❏ 데이타 분석 및 리포팅 도구 ❏ 무료 ❏ 구글 리포팅 BI 서비스 ❏ 비 개발자도 쉽게 리포트 ❏ 무료 Compute Engine
  44. 44. 추가로 해볼 것들 ● Airflow GCP Operator ● Embulk 성능 최적화 ● SSHOperator적용 ● 분산 노드 처리 ● Dag과 Task 병렬 처리 ● 각각 다른 데이터 소스에서 BigQuery로 데이터 적재
  45. 45. Q & A
  46. 46. 감사합니다 !!!

×