Apache Airflow

감자·2023년 4월 24일
0

Airflow

목록 보기
1/2
post-thumbnail

크롤링 자동화를 위해 알고 넘어가야하는 Airflow

Apache Airflow?

  • AirBnB에서 만든 workflow management tool
  • workflow를 programming 방식으로 작성, 예약 및 모니터링하는 플랫폼
  • workflow를 코드로 정의하면 유지 관리, 버전 관리, 테스트 및 협업이 용이해짐
  • Airflow를 사용하여 workflow를 DAG로 작성함

    DAG 설명 글은 여기로!!

  • DAG를 활용하면 복잡한 작업을 쉽게 수행할 수 있음
  • Airflow의 사용자 인터페이스를 통해 실행 중인 파이프라인을 쉽게 시각화, 모니터링하여 문제를 쉽게 해결할 수 있음
  • Apache에서 관리하기 때문에 Apache의 license 고지 필요
    (근데 로고가 에버랜드같당...)

DAG

  • DAG는 연결 된 화살표 방향으로 순차적으로 작업 실행
  • 분기 실행과 병렬 실행이 가능함
  • 기존의 DAG의 경우, 각 작업들이 하나의 어플리케이션으로 구현되었으며 조건이 바뀌거나 Task 수정 시, 전체 어플리케이션을 수정 후 배포해야하는 번거로움이 존재했었음

  • Airflow의 경우 각 Task가 독립적으로 존재하기에 단위 별로 나눠서 개발하는 등의 모듈화가 가능함
  • Airflow는 실행할 순서에 따라 DAG 배치 후, 술행 주기와 분기 조건을 반영하면 됨


  • 일반적인 Python 코드로 정의하며, $AIRFLOW_HOME/dags 폴더에 위치함
  • 해당 폴더의 파이썬 파일에 "airflow" 혹은 "dag" 단어가 포함되어있으면 Webserver에 표시됨

Airflow 아키텍처

Airflow는 4가지의 구성요소로 이루어져있음.

1. Webserver

  • Airflow의 웹 UI 서버

2. Scheduler

  • DAG, Task에 대하여 모니터링 및 관리
  • 실행해야 할 Task 스케줄링

3. Executor

  • 작업자들에게 작업을 실행시키는 역할
  • SequentialExecutor, LocalExecutor, CeleryExecutor, KubernetesExecutor 등이 있음
  • LocalExecutor는 병렬처리까지만 가능하고 클러스터 형으로 작업을 나눌수는 없음
  • CeleryExecutor, KubernetesExecutor는 클러스터를 구성해야함

4. Workers

  • 실제 Task 실행 주체
  • Executor 종류에 따라 동작 방식이 다름

Python DAG를 읽고, Scheduler가 Task를 스케줄링하면, Worker가 Task를 가져가 실행. 실행결과는 Database에 저장되고, Webserver로 실행 상태, 성공 여부 등을 알 수 있음

BackFill

  • 과거 특정 시점부터 현재까지 몰아서 작업 처리
  • 크롤링 자동화에 매우 유용하게 쓰일 것이라 생각됨

Airflow Operator

  • Airflow의 DAG는 여러 Task로 이루어져있으며, operator나 sensor가 하나의 Task로 만들어짐.
  • 아래는 Airflow가 기본적으로 제공하는 Operator이며 이외에도 수많은 operator들이 존재함
  1. BashOperator : bash command 실행
  2. PythenOperator : python 함수 실행
  3. EmailOperator : email 발송
  4. MysqlOperator : sql 쿼리 실행
  5. Sensor : 시간, 파일, db row 등을 기다리는 센서

refer

이수진님의 블로그
Airflow documentation
Airflow github

곰탱이푸우님의 블로그
오늘의집 기술블로그

profile
감자와 함께 떠나는 프로그래밍 여행

0개의 댓글