데이터 엔지니어링/데이터 플랫폼

[데이터플랫폼] 최신 데이터 인프라 이해하기 #5 - ETL/ELT 도구들 (Spark, Python, Hive)

pythaac 2022. 4. 25. 15:51

https://www.youtube.com/watch?v=Wo6utoIC2Jw 

  • Spark platform / Python Libs / Batch Query Engine 묶음
    • Workflow Manager와 연결되어있음
    • Workflow Manager는 분할, 분석이 아닌 Task를 수행하는 엔진
    • Spark에게 task를 시킴

 

Python Libs

Pandas

  • 이름 유래
    • Panel Data
    • 여러 개체들을 복수의 시간에 걸쳐서 추적하여 얻는 데이터

  • tabular data를 다룸
    • row / column으로 이루어진 테이블 데이터
    • DataFrame이라 부름

 

Boto3

  • Python으로 Amazon Web service(S3, EC2)에 접근하게 해주는 라이브러리

 

Dask

  • Python을 병렬로 처리할 수 있도록 만들어줌
  • Numpy / Pandas / Scikit-Learn

 

Ray

  • Dask와 비슷함
  • Dask는 중앙 스케줄러가 존재
  • Ray는 bottom-up으로 테스크를 나눔 (더 빠름)
  • 용도는 다름 (확인필요)

 

Spark Platform

Spark

  • 대규모 데이터 처리를 위한 통합 분석 엔진 (빠르고 범용적인)
  • 오픈소스 분산 다목적 클러스터 컴퓨팅 프레임워크
    • 분산 처리를 위해
    • 범용(여러가지 용도)으로
    • 여러 대의 컴퓨터로 나누어서 처리할 수 있는

 

Hadoop vs Spark

  • 데이터 처리
    • 하둡은 batch processing만 가능
  • 처리 속도
    • Spark는 메모리에 캐싱하여 더 빠름
    • 하둡은 HDFS를 기반으로 처리하여 느림
  • 기본 아이디어
    • HDFS가 느리니 RAM에서 처리하자
    • 쿼리마다 처음부터 읽어오지 않고, 한 번 RAM에 올려놓고 쿼리, 쿼리, ...

 

RDD (Resilient Distributed Datasets)

  •  문제
    • RAM은 빠르지만 깨질 수 있음(휘발성)
    • 어떻게 안전하게 사용할 수 있을까?
  • RDD
    • RAM을 read-only로 사용(Immutable)
    • Resilient : 쉽게 복원되는
    • lineage : DAG 형식으로 데이터가 어떻게 변환되어왔는지 기록, 이를 이용하여 복원
  • lazy-execution
    • 코딩해두고 "가져와"했을 때 실행함
    • 자원이 배치될 상황을 고려하여 최적의 코스로 돌릴 수 있음

 

Spark Components

  • Apache Spark Core
    • RDD를 처리하는로직
  • Spark SQL
    • RDD 기반으로 SQL문장을 처리
  • Spark Streaming
    • RDD 기반 스트리밍 처리
  • MLlib
    • RDD 기반 머신러닝
  • GraphX
    • RDD 기반 그래프 처리

 

RDD - DataFrame - DataSet

  • DataFrame
    • tabular data를 RDD 기반으로 처리
    • 더 빨라짐

  • Dataset
    • Untyped일 때는 DataFrame
    • Typed일 때는 Dataset

 

Databricks

  • Spark를 만든 개발자들이 만든 Spark 기반 솔루션
  • Spark가 엔진이면 Databricks는 자동차
  • Spark를 이용하여 구현해야하는데 이를 구현해놓은 것
  • Azuer / AWS

 

Amazon EMR

  • Elastic MapReduce
  • Amazon의 클라우드 데이터 플랫폼
  • 빅데이터 프레임워크(Spark, Hive, Presto) 등을 지원
  • Databricks와 비슷
  • Databricks와 비교하여 규모에 따라 가격 차이가 있음

 

Batch Query Engine

Hive

  • HDFS에 있는 데이터를 쿼리하기위한 엔진
  • SQL을 작성하면, MapReduce job으로 변환되어 실행
  • Spark SQL이 있는데?
    • Hive의 장점이 있음
    • 1. Meta store를 통해 Hive와 연결되어 있는 meta data를 가지고 있음
      - 어떤 데이터를 가지고 있는지, 테이블, 파티션 정보, ...
      - Spark가 이 meta store를 그대로 이용하여 더 빠르게 실행 가능

    • 2. Hive는 JDBC, ODBC 등 다양한 데이터베이스와 이미 연결
    • Hive를 실행하는 엔진으로 Spark를 쓴다
      - Hive 쿼리를 Spark를 이용하여 실행