본문 바로가기
Database

Airflow 란?

by BTC_루피 2023. 5. 15.

안녕하세요 !

문땅훈과 루피입니다!😊

 

주말 잘 보내셨나요!?

Airflow 와 함께 즐거운 한 주 시작 ~! 해볼까요?😉


 

개요

  • Airflow 란?
  • Airflow 의 동작방식
  • Airflow의 구성요소

 

1. Airflow란?

: 유연한 파이썬 framework 를 사용해 쉽게 데이터 pipeline을 구축할 수 있게 해 주며, 최신 기술 환경에서 접하게 되는 서로 다른 기술들을 연결할 수 있는 다양한 빌딩 블록을 제공하는 오픈 소스 플랫폼 입니다.

 

 

 

Airflow는 에어비앤비에서 만들었다는 사실 ! 알고 계셨나요?

 

Airflow는 쉽게 말해, Python 코드를 통해서 워크 플로우를 작성하고 스케줄링, 모니터링 하는 플랫폼 입니다. Airflow는 반복적인 작업을 자동화 하기 위해서 사용하며, DAG를 통해서 구조화 됩니다. 

 


  • Workflow란?!
    • 작업의 흐름이라는 뜻을 가지고 있으며, 가장 작은 단위는 Operator이며 이것이 모여 Task를 이룹니다.
    • Task들이 모여 DAG를 이루게 되며 DAG가 모여 Workflow가 됩니다.
    • 순서를 보면, Workflow -> DAGs -> Tasks (Operator) 로 보면 됩니다.

Operator와 Task는 다음장에서 자세히 다루도록 하겠습니다! 오늘은 Airflow의 구성 요소와 동작 방식에 대해서만 알아보도록 하겠습니다.😊

 

2. Airflow의 동작 방식

 

출처 : https://velog.io/@jjongbumeee/Airflow2 

 

Airflow의 동작 원리를 이해하기 쉽게 그림으로 같이 보겠습니다.

 

  • Scheduler → 모든 DAG와 Task를 모니터링하고 관리한다. 주기적으로 실행해야 할 태스크를 찾고 해당 태스크를 실행 가능한 상태로 변경함
  • WebServer → Airflow 웹 UI 서버이다
  • MataDB → Airflow 메타데이터 저장소이다.
  • Executor → 태스크 인스턴스를 실행하는 주체이다
  • Worker →실제 작업을 수행하는 주체이며 워커 동작 방식은 Executor의 종류에 따라 상이함

자세한 동작 원리를 알아보겠습니다.

  • WebServer 는 MetaStore에 저장된 메타데이터를 패치(Fetch)합니다.
  • 스케쥴러는 Task를 생성하기 위해서 메타스토어와 통신합니다.
  • 익스큐터는 메타스토어를 확인하여 생성된 태스크를 Worker에게 할당하고 종료 시 Status를 업데이트 합니다.

 

위 동작 방식을 간단히 설명하자면, 아래와 같습니다.

  • Webserver 구동 -> DAGs 에서 .py 파일을 받아와서 보여줌 -> Scheduler에서 DAGs를 보고 메타스토어에 정보를 전달 -> DAGRun 생성 -> DAGRun에 해당하는 Task Instance 생성 및 Excutor에 전달 -> Task가 여러개면 메타스토어와 Task 들의 처리 상태를 업데이트 -> Task가 완료되면 DAGRun에 상태 보고 -> Scheduler에 완료 상태 업데이트

 

 

3. Airflow의 구성요소

 

출처 : https://tkdguq05.github.io/2021/02/21/airflow-basic2/

 

 

  • Airflow Scheduler
    • DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 Airflow 워커에 DAG의 태스크를 예약한다.
    • DAG를 파싱하여 스케쥴된 작업들의 작업 간격을 확인하여 실제로 작업 명령을 Worker에 전달합니다.
    • DAG에 걸려있는 의존성을 확인하고 걸려있다면, 실행 큐에 더해줍니다.
    • 스케쥴러는 Airflow의 심장과 같은 역할을 수행하고 DAG와 직접적으로 붙어있습니다.
      • 해당 DAG의 위치는 airflow.cfg 파일에서 지정가능합니다.
      • airflow.cfg는 airflow에 대한 설정들이 모여있는 파일입니다.

 

  • Airflow Worker
    • Airflow 워커는 스케쥴러에서 할당해놓은 작업들을 DB에서 갖고와서 실제로 실행합니다.
    • 작업들은 DAG를 구성할때 queue를 이용해서 어떤 워커에서 수행할지 결정되고 워커는 큐를 설정해서 기동합니다.
    • 워커는 airflow worker -q main 과 같이 큐를 설정할 수 있습니다.
    • DAG에서 queue를 아래와 같이 지정해놓으면 스케쥴러는 해당 큐에 맞게 작업을 나눠놓고 워커는 자신의 큐에 맞는 작업을 찾아서 갖고옵니다.
    • 찾은 큐를 워커에서 실행하고, 실행후 나온 로그들을 회수합니다. 이 로그들은 Metastore(Airflow DB)에 저장되고 저장된 로그들은 웹 서버를 통해 확인할 수 있습니다.

 

  • Airflow Web server
    • 스케줄러에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 주요 인터페이스를 제공
    • Dag를 만든 후에 스케쥴러가 Dag폴더의 위치를 찾으면 여기에 있는 Dag를 파싱해서 웹으로 보여줍니다.

 

다음 장에서 Airflow의 DAG를 구성하는 Task와 Operator를 자세히 알아보겠습니다!

그럼 베빠 ! 😁

'Database' 카테고리의 다른 글

[SQL] 쿼리 사용시 주의사항  (0) 2023.05.19
Apache Superset & 설치  (0) 2023.05.15
Hadoop이란?  (0) 2023.03.06
REDIS  (1) 2022.12.27
PostgreSQL에 대하여  (0) 2022.12.12

댓글