실습 챕터

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: 선언형의 워크플로 관리

 

+ Recent posts