실습 챕터
6-1. 스키마리스 데이터의 애드 혹 분석
스키마리스 데이터 수집하기
- API 활용
대화식 실행 환경의 준비
- Jupyter Notebook
- python pandas
Spark에 의한 분산 환경
- pyspark: 파이썬으로 대화식의 Spark 실행
- Spark는 마스터/슬레이브 형의 분산 시스템으로 클라이언트로부터 마스터에 명령을 보냄으로써 프로그램 실행
- 클라이언트 = 드라이버 프로그램: 주피터와 조합 가능
- 드라이버 프로그램은 로컬 노트북에서 실행 가능 => 실제 실행 환경은 보통 데이터 센터의 Spark 클러스터에 접속
- Spark의 데이터프레임은 pandas와 달리, 실제로 무언가의 처리를 요구할 때까지는 메모리상에서 DAG가 조림됨
- RDD (Resilient Distributed Dataset): Spark의 로우 레벨 데이터 구조
데이터를 집계해서 데이터 마트 구축하기
- 데이터 마트를 만들 때의 선택지들
- Spark에 ODBC/JDBC로 접속
- MPP 데이터베이스에 비정규화 테이블 제작
- 데이터를 작게 집약하여 CSV 파일에 출력
BI 도구로 데이터 시각화하기
- 탐색적 데이터 분석시에는 시행착오를 노트북에 축적하자
- 계속 모니터링해야 한다면 워크플로화 해서 자동화하자
- BI 도구: 데스크톱 형 vs 웹 형
- 시각화는 이미지 처리, 필연적으로 데스크톱형의 도구가 우수
- 네트워크에 의한 지연: 데이터 마트를 작게 만드는 것의 목적은 이런 문제를 제거하기 위한 것
- 대시보드와 보고서 작성: 워크플로로 자동화 하려면 웹 형도구 필요
6-2. Hadoop에 의한 데이터 파이프라인
일일 배치 처리를 태스크화하기
1. 정기적으로 데이터 전송
2. 데이터 분석을 위해 Hive로 열 지향 스토리지 제작
3. Presto로 집계
[태스크 1] Embulk에 의한 데이터 추출
- 시간과 저장 공간을 멱등하게 처리
[태스크 2] Hive에 의한 데이터 구조화
- 열 지향 스토리지에 저장
- 파티셔닝을 통해 태스크 멱등성 확보
[태스크 3] Presto에 의한 데이터 집계
- 열 지향 스토리지에 저장된다면 장기간 집계도 고속화됨
- BI 도구에 읽어들임으로써 최종적인 데이터 파이프라인 완성
- 파라미터를 교체해서 실행 자동화 가능
6-3. 워크플로 관리 도구에 의한 자동화
Airflow: 스크립트 형의 워크플로 관리
워크플로 정의
태스크 정의
워크플로를 터미널로부터 실행하기
스케줄러를 기동하여 DAG를 정기 실행하기
- 스케줄러: 데이터베이스의 상태를 정기적으로 점검하고 그 다음으로 실행 가능한 태스크를 찾음 -> 실행 가능한 태스크가 발견되면 워크 프로세스에 전달해 실행
- 오류로부터의 복구 염두한 설계
태스크가 소비하는 자원 제어하기
태스크의 분산 처리: 원격으로 워커 실행
- 데이터 처리의 실행은 Airflow 내에서 하는 것은 부적합
- 데이터 처리는 분산 시스템에 맡기고 Airflow는 그 실행만 관리
Hadoop의 데이터 파이프라인을 실행하기
6-3. 클라우드 서비스에 의한 데이터 파이프라인
데이터 분석과 클라우드 서비스의 관계
- 클라우드 서비스의 장점
- 자원 증감이 용이
- 이용자는 설정 값만 신경 쓰면 됨
아마존 웹 서비스 (AWS)
- 기능마다 서비스가 나누어져 있어 이용자는 자신에게 필요한 것만 선택하고 연결함으로써 시스템 구축 가능
- 조합의 자유도가 높지만, 전체를 제대로 연결하려면 어느 정도 지식과 기술 요구
- 사용자가 직접 초기 설정하거나 워크플로 안에서 API를 서로 호출해야 함
=> 전체 구성을 직접 설계할 수 있음 (장점이자 단점)
- 빅데이터 관련 서비스 list
- S3: 객체 스토리지
- DynamoDB: NoSQL 데이터베이스
- EMR: Hadoop&Spark
- Athena: 쿼리 엔진 (Presto)
- Elasticsearch: 검색엔진
- Kinesis: 메시지 브로커
- Kinesis Streams: 스트림 처리
- Redshift: MPP 데이터베이스
- QuickSight: BI 도구
구글 클라우드 플랫폼 (GCP)
- 애드 혹 데이터 분석과 처리 속도에 대한 요구가 큰 데이터 엔지니어 및 데이터 사이언티스트에게 유력한 선태기
- 빅데이터 관련 서비스 list
- Cloud Storage: 객체 스토리지
- Cloud Datastore: NoSQL 데이터베이스
- Dataproc: Hadoop & Spark
- Dataflow: 데이터 플로우 (배치, 스트리밍)
- Colab: 노트북, 시각화
- Pub/Sub: 메시지 브로커
- BigQuery: 쿼리 엔진
- Looker Studio: BI 도구
Amazon Redshift vs Google BigQuery
- Redshift
- 전용 리소스 (dedicated resource): 스토리지와 계산 노드가 일체화 => 성능 안정적
- BigQuery
- 공유 리소스 (shared resource): 수천 대의 하드 디스크에 데이터 분산 => 고속화 => 자신의 노드를 관리할 필요 없는 풀 매니지드형 서비스
트레주어 데이터
- 오픈소스의 스트리밍 형 전송 도구인 Fluentd와 벌크 형 전송 도구인 Embulk 개발사
- AWS, GCP와 달리 모든 서비스가 포함된 상태로 제공 (풀 매니지드형 서비스)
- 외부 시스템과의 연계도 통합되어 있음
- 직접 컨트롤 할 수 있는 게 거의 없음 (장점이자 단점)
- 빅데이터 관련 서비스 list
- Data Collection: 데이터 수집(스트리밍, 벌크)
- Data Set Management: 분산 스토리지, 구조화 데이터
- Data Processing: 쿼리 엔진 (Hive, Presto)
- Data Delivery and Activation: ETL 프로세스
- Treasure Workflow: 워크플로 관리
- Treasure Reporting: BI 도구
- DigDag: 선언형의 워크플로 관리