2022.05.26.

Data Infrastructure 이해하기 Part 3

(Connector, Data Modeling, Workflow Manager, Spark Platform, Python Library)

 

 

 

 

 

출처: Emerging Architectures for Modern Data Infrastructure 2020

 

 

Ingestion and Transformation: data를 가져와서 transform

 


 

Ingestion and Transformation과 관련한 용어 설명 (1)

 

 

 

Connector

- source에서 발생한 data를 연결해서 data warehouse나 data lake로 전달하는 기능

- ETL/ELT tool인 Fivetran, Stitch, Matillion 등이 있음. Matillion은 extract와 load 기능이 무료임.

 

 

Data Modeling

- tool

  • dbt: Data Analyst에게 transformed data를 SQL로 제공해주는 data transformation tool. Data Analyst가 SW Developer처럼 일하도록 개발환경을 제공해줌.

 

 

Workflow Manager

- data source에서 data를 가져와서 data warehouse로 옮길 때 workflow 단위로 관리하는 tool

- tool

  • Airflow: task scheduling, distributed execution, dependency management(의존성 관리) 기능 수행. dependency management는 앞의 workflow가 끝나기 전에 그 다음 workflow가 시작되지 않게 관리하는 것임.
  • Dagster: DAG(Directed Acyclic Graph)으로 구성된 python code로 data를 transform하는 모든 것들을 하나의 application처럼 만든 tool. DAG은 한 방향으로 이어지지만 순환은 하지 않는 그래프를 말함.
  • Prefect: Airflow랑 비슷한데 좀 더 최신 버전
  • Airflow와 Dagster의 다른 점: Airflow는 task-driven으로 task 중심이고, Dagster는 data-driven으로 data 중심임.

 

 

Workflow Manager와 Spark Platform/Python Library/Batch Query Engine의 관계

- Workflow Manager가 task를 수행할 때 big data를 다루는 작업이 있는데, 이때 big data를 다루기 위해서는 많은 기기에서의 분산 작업이 필요함. 이때 Workflow Manager가 Spark에게 big data의 분산 처리 작업을 시킴.

 

 

Spark Platform

- Apache Spark: big data를 처리할 때 작업을 여러 대의 server에 나누어서 처리해야 하는데, 이를 도와주는 framework

- Spark platform은 data를 가져와서 처리하는데, 이것을 대규모로 처리 가능하게 해주는 게 Spark engine

- tool

  • Databricks: Spark 기반의 data analytics platform. Spark에 dashboard, storage, BI tool과의 연계 등 다양한 service를 지원함.
  • EMR: Amazon의 cloud big data platform. 기능은 Databricks와 비슷함. 
  • Databricks와 EMR의 다른 점: Databricks는 Spark만 지원하는 반면 EMR은 Spark, Hive 등을 다 지원함. 비용은 작은 instance에서는 Databriks가 더 싸고, 큰 instance에서는 EMR이 더 쌈.

 

 

Python Library

- Pandas를 이용하여 data를 분석하고, Dask나 Ray를 이용하여 이를 여러 대의 server에서 수행함.

- library

  • Pandas: data를 table 형태의 DataFrame 구조로 읽어서 분석 가능하게 도와줌.
  • Boto: python에서 Amazon resource를 사용하게 도와주는 API. AWS에 접속해서 Amazon S3나 EC2에 접근할 수 있게 도와줌.
  • Dask: python code를 분산 computing 할 수 있게 도와줌. 대부분의 python library는 local에서 혼자 돌아가도록 만들어졌는데, 이를 병렬로 여러 대의 server에서 동시에 실행하여 큰 작업을 할 수 있게 도와줌.
  • Ray: Dask와 같이 python code를 분산 computing 할 수 있게 도와줌.
  • Dask와 Ray의 다른 점: Dask는 centralized scheduler가 있어 중앙에서 모든 것을 scheduling함. Ray는 distributed bottom-up scheduling을 해서 local scheduler들에게 task를 주면 local scheduler가 자기가 가진 worker들에게 task를 다시 분산함. 그래서 Ray가 Dask보다 조금 더 빠름. 보통 Dask는 data frame으로 분산 처리할 때 쓰고, Ray는 여러 대의 server에서 ML을 돌릴 때 씀.

 

 

 

 

 

참고: GeekNews in Youtube

복사했습니다!