당신이 airflow를 사용해야 하는 이유

오현우·2022년 4월 2일
1

airflow

목록 보기
5/20

작업 스케쥴러 에어플로우

에어플로우를 통해 반복되는 작업들을 일정한 순서를 가지고 원하는 시간에 지속적으로 수행할 수 있다.

구체적인 예시를 들어보자.

우리는 매일 오전 7시에 아래와 같은 data pipeline을 실행하려고 한다.

위의 프로세스를 예시로 설명하자면 아래와 같다.

request API > spark job > MySQL(Database)

물론 위의 작업은 사람이 수작업으로 가능하다.

그러나 아래와 같이 데이터 파이프라인이 많아지면 어떻게 할까?

일일히 위의 파이프라인들을 수작업한다고 하면 아마 모든 데이터 엔지니어들은 일을 그만두지 않을까 싶다.

많은 pipeline을 쉽게 모니터링할 수 있다.

에어플로우를 사용하면 아래와 같이 다양한 파이프 라인을 쉽게 모니터링이 가능하다.

이러한 점에서 에어플로우를 쓰는 것이 데이터 엔지니어에게는 매우 필수적이라고 생각한다.

에어플로우는 data orchestraor 이다.

이제 다시 airflow를 정의해보자.

airflow다양한 툴을 활용하여 원하는 시간원하는 데이터정해진 순서와 정해진 작업 방식으로 데이터를 다룰 수 있게 해주는 data orchestraor 라고 정의할 수 있다.

airflow 특장점

  1. Dynamic 한 언어인 python을 사용하여 DAG를 정의할 수 있다.
  2. 시스템 리소스를 자유롭게 추가하여 작업 처리량을 늘릴 수 있다.(Scalability)
  3. UI를 제공한다.
  4. 다양한 새로운 툴들을 에어플로우에서 사용할 수 있고 계속해서 추가할 수 있다.(Extensibility)

Core Component

  1. Web Server
    flask 서버 기반의 UI 환경이 주어진다.

  2. Scheduler
    백그라운드에서 스케쥴링된 workflow를 할당한다.

  3. MetaStore
    에어플로우에서 쓰는 메타데이터를 저장하는 데이터 베이스

  4. Executor
    에어플로우에서 Task 인스턴스를 실행하는 주체 (이부분은 좀 복잡해서 나중에 따로 다루겠다.)
    (celery excutor, kubernetes excuter가 대표적으로 존재)

  5. Worker
    Executor가 정해준 방식으로 task를 할당받아 작업하는 노드 또는 프로세서이다.

DAG

방향이 존재하는 비순환 그래프
위의 그래프 형식으로 데이터 파이프라인을 구축

Operator

  1. Action operator : 실제 환경에서 해당 작업을 명령할 내용을 실행시켜 주는 operator
    구체적인 예시로 bashoperator, pythonoperator등등이 존재한다.
  1. Transfer Operator : 원본 데이터를 다른 목적지로 이동시켜 주는 오퍼레이터
    구체적인 예시로 mysql db에서 gcp bucket으로 옮기는 오퍼레이터.

  2. Sensor Operator : 시간, 파일, 외부 이벤트를 기다리며 해당 조건을 충족해야만 이후의 작업을 진행할 수 있게 해주는 Airflow의 오퍼레이터

task / task instance

task: 내 데이터 파이프라인의 오퍼레이터

task instance: 내 파이프라인에서 실행되고 있는 오퍼레이터

airflow에 대해 주의할 점

  1. airflow는 data streaming soltion이 아니다.

  2. airflow는 데이터 처리 프레임워크가 아니다
    airflow는 데이터 처리를 위해 많은 메모리를 수용하지 못한다.
    airflow를 통해 다른 프레임워크에 작업을 내려 해당 프레임워크 안에서 동작하게 워크 플로우를 작성해야 한다.

profile
핵심은 같게, 생각은 다르게

0개의 댓글