Lim Seunghyun Space

Airflow 본문

Data Engineering/Airflow

Airflow

Lim Seung Hyun 2021. 12. 17. 11:28

Airflow

  • 워크플로우 작성, 에약 및 모니터링하는 플랫폼

 

Airflow를 쓰는 이유

  • ETL을 구현한 Python 스크립트를 하나 가동하는데는 cronjob으로 돌려도 상관없지만, 다수의 ETL 스크립트를 cronjob으로 가동하는 경우 아래와 같은 문제점이 있다.
    • 모니터링 : 스크립트가 잘 가동되고 있는지 확인하기 어렵다.
    • 의존성 문제 : ETL간 의존성이 있는 경우 상위 ETL이 잘 가동되고 있는지 확인하기 어렵다.
    • 실패 복구 : 스크립트에서 에러 발생시 언제부터 언제까지 어떻게 다시 실행할 것인지 불명확하다, Backfill의 이슈도 있다.
    • 분산된 환경에서 중앙으로 ETL을 관리하기 어렵다.
  • 위의 문제점을 Airflow에서 해결할 수 있다.

 

Airflow 컴포넌트

  • 웹 서버 : 웹 대시보드
  • 스케쥴러 : 워크플로우의 스케쥴링
  • Metastore : 메타데이터 DB
  • Executor : Task가 어떻게 실행되는지 정의
  • Worker : Task를 실행하는 프로세스

 

DAG (Directed Acyclic Graph)

DAG

  • 방향은 있으면서 순환하지 않은 그래프
  • 1,2,3 순서대로 진행하면서 이전 단계가 완료되면 다음 단계로 넘어가는 형태
  • 3번이 완료되면 DAG는 종료
  • 1,2,3을 각각 Task라고 함

 

Task

  • 하나 이상의 Task로 DAG를 구성
  • Task 간에 순서를 지정할 수 있고, 의존성 지정도 가능하다.
extract = PythonOperator(
...
)

transform = PythonOperator(
...
)
load = PythonOperator(
...
)

extract >> transform >> load
  • Operator로 Task를 생성하고 ">>"을 이용하여 extract -> tranform -> load 라는 의존성 지정

 

Operator

728x90

'Data Engineering > Airflow' 카테고리의 다른 글

airflow WEB UI - DAG Details  (0) 2022.01.20
airflow Web UI 살펴보기 - DAGs  (0) 2022.01.20
airflow user 관리  (0) 2022.01.20
Airflow 구조  (0) 2022.01.20
[Airflow] Airflow 설치  (0) 2021.12.03