ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [실날데] 5주차 Airflow Deepdive
    카테고리 없음 2023. 4. 22. 16:03
    728x90

    Dag Configureation

     

    Dag parameters

    아무리 높게 지정해도 Worker 서버의 CPU 수 이상으로 돌아갈 수 없다.

    * max_active_runs : 동시에 실행할 수 있는 Dags instance 수

    * max_active_tasks : 동시에 힐생 할 수 있는 task의 수 

     

    xcom_pull

    데이터가 작을때는 airflow 자체 DB에 저장한 뒤 전달해도 되지만, 큰 데이터의 경우 S3와 같은 storage에 저장한 후, 그 경로를 전달하는 방식으로 가져와야 한다.

     

    Variable

    중요한 logic과 관계된 것에는 넣으면 안된다. 이 경우 히스토리도 남지 않고, 코드 리뷰가 어렵기때문에 디버깅이 어렵다.

    ex) sql qurey, 코드

     

    DAG와 Task

    Task를 많이 만들면 전체 DAG가 실행되는데 오래 걸리고, 스케쥴러에 부담이 간다.

    그러니 모듈화의 적정선, 실패의 재실행이 쉽게 적당한 수의 Task 를 나누어 만들자.

     

    arflow.cfg 를 변경했을 경우

    sudo systemctl restart airflow-webserver

    sudo systemctl restart airflow-scheduler

    를 실행해줘야 함. 그러나 메타데이타 DB 를 변경 하였을때 db init을 해줘야 함. 이 경우 기존에 설정한 Variable 등이 모두 날아가기 때문에 주의가 필요

     

    Dags 폴더에 코딩시 주의점

    어떤 py 파일이든,

    from airflow import DAG

     DAG 구조가 있건 없건 관계 없이 파일이 있다면 스케쥴러는 무조건 실행시킨다.

    production, test각 환경을 다르게 테스트해야 한다.

     

    max_active_runs

    max_active_runs가 1이상(동시에) s3 key가 하나의 경우 오류가 발생함, s3 key 가 unique  해야 하므로 s3 key 값에 date를 붙여서 unique하게 만듦

     

     

    댓글

Designed by Tistory.