데이터 엔지니어링이란 데이터를 가져와 분석하기 좋은 형태로 가공하는 것이다.
데이터 가공 작업을 ETL(Extractingm Transforming, Loading) 작업이라 하며, 데이터를 추출, 변형, 저장하는 작업이다.
요즘에는 기존의 ETL 방식에서 ELT 방식의 아키텍쳐로 변환하고 있다.
시스템의 복잡도에 따라 데이터 추출과 적재를 한번에 하기도 한다.
데이터 아키텍쳐 분야를 크게 6가지로 나누어 보면 아래의 표로 나타낼 수 있다.
Source | 비즈니스와 운영 데이터 생성 |
Ingestion & Transformation | 운영 시스템에서 데이터 추출 (E) 추출된 데이터를 저장하고 스키마 관리 (L) 데이터를 분석할 수 있도록 변환 (T) |
Storage | 데이터를 쿼리와 처리 시스템이 쓸 수있도록저장 비용과 확장성 면으로 최적화 |
Query & Processing | 데이터 분석을 위한 인사이트 만들기 (Query) 저장된 데이터를 이용해 쿼리를 실행하고 필요시 분산처리 (Processing) 과거에 무슨 일이 일어났는지 혹은 미래에 무슨일이 일어날지 (ML) |
Output | 데이터 분석을 내부와 외부 유저에게 제공 데이터 모델을 운영 시스템에 적용 |
데이터 엔지니어링 도구들을 살펴보면 아래와 같다.
Source | Log Database |
Ingestion & Transformation | Airflow Kafka Pandas Spark Flink Hive |
Storage | Parquet, S3, HDFS |
Query | Presto, Dremio (Query) |
Processing | Tensorflow Pytorch Spark SparkML Flink |
Output |
Tableau, Looker
|
Source, Storage, Query는 서비스 레벨보다 로우레벨 문제를 푸는 단계이고,
Ingestion & Transformation, Processing가 수집과 변환, 데이터 처리를 하는 단계이다.
결국 데이터 엔지니어링에서 중요한 부분은 Ingestion & Transformation, Processing 단계이다.
데이터를 수집을 위한 환경 구축이 잘되어있어야 데이터로 부터 유의미한 결과를 얻을 수 있으므로 엔지니어링이 중요하다.
Garbage In Garbage Out
복잡한 데이터 모델을 만드는것 보단 좋은 데이터를 모으고 잘 관리하는 것이 훨씬 효율적으로 성과를 내는 방법
'DevOps > Spark' 카테고리의 다른 글
[Spark] RDD(Resillient Distributed Data)란? (0) | 2022.02.24 |
---|---|
[Mac OS] Java (OpenJDK) 설치 및 버전 변경하기 (0) | 2022.02.23 |