728x90

CH 06. 빅데이터 분석 기반의 구축

실제로 데이터를 처리하는 예제를 보여줌.

후에 실제 코드들을 참고하여서 실습 진행해보기

 

6-1. 스키마리스 데이터의 애드혹 분석

스키마리스 데이터 수집하기

- JSON 형태 데이터 수집하기

대부분의 분산 시스템이 자바 기반이므로 JDK가 설치되어있어야 한다.

대화식 실행 환경의 준비

- Jupyter Notebook

 

Spark로 분산 데이터 처리

- pandas 보다 더 업그레이드 된 버전 / 빅데이터 처리에 대응 

 

jupyter notebook을 프론트 엔드로 하여서 데이터 처리 가능

DAG 데이터구조 기반이므로, 데이터 처리 후에 show() 코드를 통해 데이터 처리가 한꺼번에 이루어짐.

 

데이터를 집계하여 데이터 마트 구축하기

 

  • spark에 ODBC/JDBC로 접속하기
  • MPP데이터베이스에 비정규화 테이블 만들기
  • 데이터를 작게 집약해서 CSV파일에 출력하기

BI도구로 데이터 시각화 하기

 

6-2. 하둡에 의한 데이터 파이프라인

일일 배치처리를 태스크화 하기

 

데이터 소스는 몽고DB, Hive로 열지향 스토리지를 만들고 그것을 Presto로 집계한다. 

 

Embulk에 의한 데이터 추출

- 실제로 해당 오픈소스를 사용하지 않고, 몽고DB 전용의 커맨드라인 도구나 Hive로 몽고DB에 직접 접속해서 데이터를 추출해도 된다. 

이를 위해 작성한 스크립트 코드를 워크플로 관리 도구를 통해 실행한다

 

Hive에 의한 데이터 구조화

 

Presto에 의한 데이터 집계

이 또한 스크립트언어로 작성하여 워크플로 관리 도구로 실행 및 관리 가능. 

 

6-3. 워크플로 관리 도구에 의한 자동화

Airflow를 대표적으로 활용 해봄

 

Airflow

- 스크립트 형의 워크플로 관리

 

워크플로는 여러 태스크로 이루어진 DAG의 형태로 정의한다. 

처음에 태스크 간의 의존 관계를 정의해두면 그 실행 순서는 시스템에 의해서 자동으로 결정된다. 워크플로는 파이썬 스크립트로 기술한다. 

의존관계가 없는 경우에는 동시에 병렬로 실행된다. 의존관계가 잇을 경우는 정한 순서대로 실행된다. 

각 태스크는 데이터 처리의 대상이 되는 시간이 파라미터로 전달된다. 

 

태스크를 만들기 위해서 Operator라는 클래스를 활용한다. 

애드혹 분석을 워크플로에 삽입하고 싶을수도 있으나, 일반적으로 워크플로는 재실행을 고려하여 안정성을 중요시한다. 이 때 내부상태를 지니고 있는 애드혹 분석을 워크플로에 같이 삽입하는 것은 위험하므려 별개의 구현으로 작업하는 것이 좋다. 

스케줄러를 기동하여 DAG를 정기 실행하기

스케줄 간격이 끝날 때 실행된다. 가령 1월 1일의 태스크가 실행되는 것은 다음날인 1월 2일이다. 

 

태스크가 소비하는 자원 제어하기

워커 분산 처리 활용

 

하둡의 데이터 파이프라인 실행하기

 

6-4. 클라우드 서비스에 의한 데이터 파이프라인

직접 구축하기 보다는 클라우드 서비스를 사용

AWS, Google, Azure 가 대표적

 

AWS - EMR, Redshift

 

GCP - Bigquery (redshift와 다른 점은 쿼리엔진과 분산 스토리지가 분리된 아키텍쳐)

728x90

+ Recent posts