DAGs Page
DAG는 Directed Acyclic Graph의 약자로 Airflow에선 workflow라고 설명함
Task의 집합체
메인 화면엔 정의되어 있는 DAG들을 확인할 수 있음
현재는 많은 example이 존재
example을 보고싶지 않다면 airflow.cfg에서 load_examples = False로 설정하면 됨
Running Switch
- DAG Pause/Unpause
- 버튼을 통해 DAG 활성화 및 비활성화 가능
Name & Tags
DAG Name & Tag
example_short_circuit_operator이라는 dag name이고, example이라는 tag가 있다.
tag를 통해 DAG 검색이 가능하므로 프로젝트별 기능별로 나누면 좋을 거 같다.
Owner
DAG Owner
Owner는 소유자를 뜻하는 것으로 생성한 유저를 뜻함
DAG의 소유주 확인
Runs
DAG Runs
queued : queue에 대기 중인 상태
success : 실행 성공
running : 실행중
failed : 실행 중 에러 발생
Recent Tasks/DAG Runs에 최근 실행된 Task들이 나타나며, 실행 완료된 것은 초록색, 재시도는 노란색, 실패는 빨간색으로 표시됨
Schedule
Schedule은 예정된 스케쥴로 cron 스케쥴의 형태와 동일하게 사용
DAG Schedule
DAG의 실행 주기 확인
format은 crontab 시간 포맷과 동일
crontab 시간 표현식과 관련된 사이트 : https://crontab.guru/
DAG 생성하는 흐름
(1) default_args 정의
누가 만들었는지, start_date는 언제부턴지 등)
(2) DAG 객체 생성
dag id, schedule interval 정의
(3) DAG 안에 Operator를 활용해 Task 생성
(4) Task들을 연결함( >>, << 활용)
# set_upstream은 t1 작업이 끝나야 t2가 진행된다는 뜻
Airflow는 $AIRFLOW_HOME(default는 ~/airflow)의 dags 폴더에 있는 dag file을 지속적으로 체크함
Operator를 사용해 Task를 정의함
Operator가 인스턴스화가 될 경우 Task라고 함
Python Operator, Bash Operator, BigQuery Operator, Dataflow Operator 등
Operator 관련 자료는 공식 문서 참고
Operator는 unique한 task_id를 가져야 하고, 오퍼레이터별 다른 파라미터를 가지고 있음
다시 정리하면 DAG 객체 생성 -> Operator를 활용해 Task 작성 -> Task를 연결하는 방식
Last Run
DAG Last Run
DAG의 가장 최근 실행된 날짜
Next Run
DAG Next Run
DAG의 다음 실행 예정 날짜
Recent Tasks
DAG Recent Tasks
Task의 최근 실행 결과 확인
none : task가 queue에 대기되지 않은 상태
removed : 실행이 시작된 후 삭제된 상태
scheduled : 스케쥴러가 task의 종속성이 충족되고 실행되어야 한다고 결정된 상태
queued : task가 Executor에 할당되었고 Worker를 기다리는 상태
running : task가 worker에서 실행 중인 상태
success : task가 오류 없이 실행을 완료한 상태
shutdown : task가 실행 중일 때 종료하도록 외부적으로 요청된 상태
restarting : task가 실행 중일 때 다시 시작하도록 외부에서 요청된 상태
failed : task를 실행하는 동안 오류가 발생하여 실행하지 못한 상태
up for retry : task에서 작업이 실패했지만 retry 횟수가 남았고 다시 스케쥴링되는 상태
up for reschedule : 작업이 모드에 있는 센서입니다.
upstream failed : 의존성이 있는 task에서 먼저 실행해야 하는 task에서 error 발생
skipped : 분기, LatestOnly 등으로 인해 작업이 건너뛴 상태
sensing : task가 smart sensor
deferred : task가 트리거에 의해 연기된 상태
Delete Dag
Dag 파일을 삭제하는 것이 아닌 instance만 삭제
특정 Task를 test하고 싶은 경우
date 날짜로 실행함
airflow test [DAG id] [Task id] [date]
Calendar View
몇 달 또는 몇 년 동안의 전체 DAG 기록에 대한 개요를 제공합니다. 시간 경과에 따른 실행의 전반적인 성공/실패율 추세를 빠르게 확인할 수 있습니다.
Gantt Chart
The Gantt chart lets you analyse task duration and overlap. You can quickly identify bottlenecks and where the bulk of the time is spent for specific DAG runs.
네모칸이 길면 더 오래걸리는것 - 줄일려고 노력해봐야함
the most useful view to detect bottlenecks in your DAG
Code View
Transparency is everything. While the code for your pipeline is in source control, this is a quick way to get to the code that generates the DAG and provide yet more context.
걍 코드 다 보여줌
컨벤션에 맞게 이쁘게 잘써야함
Crontab.guru - The cron schedule expression editor
crontab.guru
'Data Analysis > Python' 카테고리의 다른 글
[Airflow] 기본 정리 (3) | 2023.01.23 |
---|---|
[Pandas] 조건걸고 새로운 칼럼 추가하기 (0) | 2023.01.07 |
[Python] 대용량 데이터csv 읽어오기 (PyArrow) (0) | 2023.01.07 |
[python] 서울시전월세_매물_위도,경도_구하기_GoogleMapAPI (0) | 2023.01.06 |
[Python] Pandas: 한 셀의 데이터를 여러 행으로 나누기 (0) | 2023.01.06 |
댓글