-
[실날데] 5주차 Airflow Deepdive카테고리 없음 2023. 4. 22. 16:03728x90
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하게 만듦