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
데이터 분석에 집중하여
인사이트를 얻는데 초점을 맞출 수 있다.
+
12. ● 데이터
○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터
○ 대회 결과 데이터
● 로그 데이터 파일 수 : 총 1만개
● 데이터 크기
○ 원본 - 총 146GB
○ GZIP압축 후 - 총 10.7GB
● 데이터 포맷
○ CSV
● 스키마 컬럼수
○ 75개
● 데이터 타입 구성
○ String, Integer, Timestamp
활용한 데이터 정보
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
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
...
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
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로 데이터 적재