앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 - 17 Workflow scheduling frameworks

양갱맨 2021. 8. 25. 18:29

주제

워크플로우 스케쥴링이 필요한 이유와 관련 툴인 Airflow에 대해 배웠다.


앞선 강의에서 데이터베이스에서 데이터를 가져오는 방법과 병렬 컴퓨팅 프레임워크에 대해서 배웠다.

이 모든 작업을 통합하는 과정이 필요한데, 이번 장에서 배우는 워크플로우 스케쥴링 프레임워크를 사용하여 통합 작업을 조정할 수 있다.

예제 파이프라인

 

CSV 데이터를 추출하여 Spark에서 일부 레코드를 필터링하는 등의 처리를 하여 분석 데이터베이스에 데이터를 로드하는 예시가 있다.

매일 새로운 CSV 파일이 들어와 이 작업을 매일 수행해야한다고 생각해보자.

어떻게 수행할 수 있을까?

  1. 수동 작업하기
  1. cron 스케쥴링 도구 활용하기
  1. 의존성 문제
    • 중간에 다른 작업이 추가되어야 한다면?
    • 전체적인 접근이 필요하고 간단한 도구로 처리하기 어려움

방향성 비순환 그래프(DAGs)

종속성을 시각화하기 가장 좋은 방법은 DAG를 사용하는 것이다.

DAGs

  • 노드 집합으로 구성되어있다.
  • 그림처럼 방향이 있는 엣지로 연결된다.
  • 싸이클을 갖지 않는다.

종속성을 위한 DAG 예약을 위한 도구

  • Linux - cron
  • Spotify - Luigi
  • Apache - Airflow

Airflow는 Airbnb에서 만들었고 Python을 사용하여 개발자는 복잡한 파이프라인을 구축하는 DAG를 만들고 테스트할 수 있다.

Airflow : DAG 예제

  1. Spark 클러스터를 시작한다.
  1. ingest_customer_data, ingest_product_data 작업을 실행한다.
  1. 2단계 작업이 수행된 후, enrich_customer_data 작업을 통해 두 테이블을 집계한다.

Airflow : 예제 코드