본문 바로가기

Data Engineering/Hadoop Ecosystem

[FastCampus-DE] 2. 데이터 파이프라인

이번 포스팅에서는 데이터 파이프라인에 대해 알아보도록 하겠다.

 

What is Data Pipeline?

 

데이터 파이프라인이란 무엇일까? 간단히 말하면 다양한 소스에서 데이터를 변환하고 옮기는 일련의 과정을 구성한 시스템이라고 보면 되겠다.

<이미지 출처> https://maily.so/grabnews/posts/ecaebe

 

그렇다면 데이터 파이프라인은 왜 필요할까?

 

데이터 파이프라인을 구성함으로써 데이터 기반의 의사결정을 지원할 수 있을 뿐만 아니라, 데이터 기반의 애플리케이션을 개발하는 데에도 큰 도움이 된다. 그리고 이러한 데이터 파이프라인은 "빅데이터 아키텍처" 설계에 기반하여 구축된다.

 

이와 같은 데이터 파이프라인을 구축하는 직무가 바로 "데이터 엔지니어" 이다!


지금부터 데이터 파이프라인 구축에 사용되는 각각의 용어들이 무엇을 의미하는지 한 번 살펴보도록 하겠다.

 

  • ETL
    • "Extract(추출), Transform(변환), Load(적재)"를 의미하며 여러 시스템의 데이터를 단일 데이터베이스, 데이터 저장소, 데이터 레이크 또는 데이터 웨어하우스에 결합하기 위해 일반적으로 사용되는 방법이다.

<출처>&nbsp;https://dining-developer.tistory.com/50

  • ELT
    • ELT에 비해 새로운 비정형 데이터에 대한 유연성 및 저장 용이성이 존재한다.

<출처>&nbsp;https://dining-developer.tistory.com/50

  • 데이터 저장소
    • Data Lake
      • 일반적으로 원시 데이터를 저장하는 저장소이다.
      • Data Warehouse와 달리 정형, 비정형 데이터 모두를 수용한다.
    • Data Warehouse
      • 미리 설계된 스키마에 맞춰서, 구조화된 데이터 모델로 변경하여 데이터를 저장하는 저장소이다.

대부분의 데이터 파이프라인은 스크립트, 서비스 호출 및 모든 활동을 오케스트레이션하는 파이프라인으로 구성된다. 여기서 오케스트레이션이란 여러 개의 컴퓨터 시스템, 애플리케이션 또는 서비스를 조율 및 관리하는 것을 의미하며, 이를 통해 복잡한 task와 workflow를 쉽게 관리할 수 있도록 지원해준다.

 

이 때, 각 task 간 의존성을 설정해서 관리해줘야 하는데, 이러한 경우 사용되는 대표적인 workflow management가 바로 "Airflow""Oozie" 이다.

 

각각의 workflow management에 대한 설명을 하기에 앞서, "DAG(Directed Acyclic Graph)"에 대해 짚고 넘어가자!

 

DAG은 그래프 유형 중 하나로, 연결 방향이 존재하고 순회하지 않는 그래프를 의미한다. 즉, 한 작업이 완료된 이후에 다음 작업이 실행되며, 이전 작업으로 돌아가지 않는다. 다시 말해 task 설계에 유리한 구조를 갖는다고 할 수 있다.

 

Airflow와 Oozie는 DAG(방향성 비순환 그래프)에 의해 구동되며, 이외에도 Azkaban과 Luigi 등 다양한 workflow management가 존재한다.

 

각각의 workflow management 별 특징들을 간단히 정리해보면 다음과 같다.

  Airflow Oozie Azkaban Luigi
개발 회사 Apache Apache LinkedIn Spotify
Workflow 정의 Python XML YAML Python
Web UI O O O O
Backfill O O X O

이상으로 데이터 파이프라인에 대한 포스팅을 마치도록 하겠다.

 

<Reference>

1. [패스트캠퍼스] 한 번에 끝내는 빅데이터 처리 with Spark&Hadoop 강의