본문 바로가기
App Programming/Apache Airflow

[Apache Airflow] DAG 개발

by goatlab 2024. 6. 14.
728x90
반응형
SMALL

DAG

 

 

DAG는 AirFlow에서 실행할 작업들을 순서에 맞게 구성한 워크플로우 (workflow)를 의미하는 방향성 있는 비순환 그래프라고 불린다. 여러 Task가 의존 관계를 통해 연결되어 있으며, 의존 관계는 순환되지 않고 한 방향으로 연결된다.

 

DAG 개발

 

DAG는 1개 이상의 오퍼레이터로 정의되며 오퍼레이터는 하고자 하는 기능에 대한 설계도라 할 수있다. Task는 오퍼레이터 (클래스)를 통해 생성된 객체로 실제 job을 수행하는 대상이 된다. EC2서버의 /home/ubuntu/dags 디렉토리에 DAG 파일을 다음과 정의한다.

 

/home/ubuntu/ 홈 디렉토리
dags/
  • dag을 모아놓는 디렉토리
  • 해당 디렉토리에 dag 파일을 저장해 두면 일정 시간이 지난 후 web에서 확인 가능
plugins/ dag에서 참조할 공통 모듈이나 추가 모듈을 모아 놓은 디렉토리
logs/ dag 수행 결과가 저장되는 디렉토리
config/ 설정 정보 등을 저장하는 디렉토리

 

Bash Operator 작성

 

Airflow에서 기본 제공해 주는오퍼레이터 중 하나로 Bash 명령을 수행해주는 오퍼레이터이다.

 

from airflow import DAG
import datetime
import pendulum
from airflow.operators.bash import BashOperator

with DAG(
        dag_id="dags_bash_operator",
        schedule="0 0 * * *",
        start_date=pendulum.datetime(2024, 6, 1, tz="Asia/Seoul"),
        catchup=False
) as dag:
        bash_t1 = BashOperator(
                    task_id="bash_t1",
                    bash_command="echo whoami",
        )

        bash_t2 = BashOperator(
                    task_id="bash_t2",
                    bash_command="echo $HOSTNAME",
        )

        bash_t1 >> bash_t2

 

Bash Operator 수행 결과

 

 

https://wang-kuanchih.medium.com/setting-up-apache-airflow-celery-executor-cluster-a76dd49b4968

스케줄러
  • DAG Parsing후 DB에 정보 저장
  • DAG 시작 시간 결정
  • DB에 Task 상태 기록
워커 워커 :실제 작업수행

728x90
반응형
LIST

'App Programming > Apache Airflow' 카테고리의 다른 글

[Apache Airflow] Python 오퍼레이터  (0) 2024.06.17
[Apache Airflow] Email 오퍼레이터  (0) 2024.06.17
[Apache Airflow] Cron Schedule  (0) 2024.06.17
[Apache Airflow] 개발 환경 구성  (0) 2024.06.14
Apache Airflow  (0) 2024.06.14