Apache Airflow란?

hwwwa·2023년 3월 25일
0

🪁 Airflow

목록 보기
1/3

🪁 Airflow

  • Airbnb에서 만든 workflow management tool이며, 현재는 아파치 재단에서 관리중인 오픈소스입니다.
  • 데이터엔지니어링의 ETL 작업 자동화, DAG(Directed Acyclic Graph) 형태의 워크플로우 작성, 정교한 dependency의 파이프라인 설정 가능합니다.
    • ETL(Extract, Transformation, Load)이란? 데이터를 추출하고 가공하여 적재하는 과정을 파이프라인으로 구축하고 주기적으로 실행하는 것입니다.
    • 추출, 가공, 적재 기능을 나눠서 개발하고 Airflow로 작업들을 연결하여 파이프라인으로 배치하고 일정 시간마다 주기적으로 실행 가능합니다.
  • 주기적으로 실행하는 것은 Linux CronTab과 유사하지만, CronTab은 하나의 애플리케이션만 지정 가능하고 각 태스크를 연결하는 것이 불가능합니다.
  • 반면 Airflow는 복잡한 작업을 쉽게 구성할 수 있고, 각 태스크 별로 연결할 수 있어 전체 파이프라인 구성에 적합합니다.
  • Airflow 2.0 이상부터는 Context Manager나 Decorator 등 개발자에게 친숙한 Python 문법을 사용해 DAG를 작성할 수 있습니다.

⚙️ Airflow 동작 원리

  • Scheduler : 모든 DAG와 Task를 모니터링하고 실행 순서와 상태를 관리합니다. 실행해야할 Task를 스케줄링하여 Executor에 제출합니다.
  • Executor : status가 queued인 Task를 확인하며 실제 어떤 리소스가 투입되어 실행이 될 것인지 결정합니다.
  • Worker : 실제 Task를 실행하는 주체입니다.
  • Web server : Airflow의 웹 UI 서버. 실행 중인 작업을 한 눈에 볼 수 있는 다양한 View 기능을 제공합니다.
  • DAG : Directed Acyclic Graph. Python으로 작성된 워크플로우로, Task들의 dependency를 정의합니다.
  • Database : Airflow에 존재하는 DAG와 Task들의 메타데이터를 저장합니다. 기본 설정은 SQLite입니다.
  • Airflowg.cfg : configuration 설정 파일입니다. DAG 파일 위치, log 파일 저장 위치 등을 설정할 수 있습니다.

  • Airflow는 개발자가 작성한 Python DAG를 읽고, 거기에 맞춰 Scheduler가 Task를 스케줄링하면, Worker가 Task를 가져가 실행합니다.
  • Task의 실행상태는 Database에 저장되고, 사용자는 UI를 통해서 각 Task의 실행 상태, 성공 여부 등을 확인할 수 있습니다.

🔃 DAG (Directed Acyclic Graph)

  • 실행하고 싶은 Task들의 관계와 dependency를 표현하고 있는 Task들의 모음입니다.
  • 어떤 순서와 어떤 dependency로 실행할지, 어떤 스케줄로 실행할지 등의 정보를 가집니다.

🛠 Operator

각 Airflow DAG는 여러 Task로 이루어져있으며, operator나 sensor가 하나의 Task로 만들어집니다. Airflow는 기본적인 Task를 위해 다양한 operator를 제공합니다.

  • BashOperator : bash command를 실행
  • PythonOperator : Python 함수를 실행
  • EmailOperator : Email을 발송
  • MySqlOperator : sql 쿼리를 수행
  • Sensor : 시간, 파일, db row, 등등을 기다리는 센서
  • DockerOperator: Docker 컨테이너를 실행할 수 있는 Operator

Airflow에서 기본으로 제공하는 operator 외에도 커뮤니티에서 만들어진 operator 또한 사용할 수 있습니다.

🐳 Docker로 Airflow 구성하는 경우


참고 링크

0개의 댓글