task의 종류 3가지
Operator(작업자), Sensors(이벤트감지), TaskFlow-decorated(custom python function)
Relationships
# 방법1
second_task >> [third_task, fourth_task]
# 방법2
first_task.set_downstream(second_task)
third_task.set_upstream(second_task)
- 태스크에서 태스크간 정보를 전달하는 데에는 Xcom을 사용함.
Task Instances
- task states의 종류는 이미지 참조. (보통 none -> scheduled -> queued -> running -> success )
- task states는 xcom을 통해 다음 method로도 넘어감
Relationship Terminology
- upstream and downstream
Timeouts
- operator: execution_timeout (datetime.timedelta) => AirflowTaskTimeout
- sensor : timeout => reschedule => AirflowSensorTimeout
- vs SLAs: timeout은 시간이 초과되면 에러가 되고, SLA는 시간이 초과되면 알람이 오고, task가 그대로 진행된다 ( 단순 연장)
SLAs
- SLA Misses 가 발생하는 경우 이메일로 알람 발송
- sla 파라미터로 datetime.timedelta를 입력, => 이메일 발송,
- sla_miss_callback을 통한 custom도 가능
- 수동 trigger는 sla miss를 허용하지 않음
sla_miss_callback
- 파라미터 : dag, task_list, blocking_task_list, slas, blocking_tis 을 인자로 받는 함수를 만들어 넘길 수 있다.
Special Exceptions
아래 exception들을 추가하면 기존 job에서 특정 조건에 대해 빠르게 에러 처리를 진행할 수 있음.
- AirflowSkipException: 현재 task를 skipped로 설정
- AirflowFailException: 현재를 실패로 표현하고 이후 task들을 실행하지 않음.
Zombie/Undead Tasks
airflow가 task의 상태를 감지하는 방식
- Zombie tasks: 비활성 상태임에도 불구하고 실행 중인 상태로 멈춰 있는 작업 인스턴스
- 주로 worker의 oom, 재시작, scale 변경
- Undead tasks: 실행되면 안되는데 실행되는 task
출처:
'기술스택을 쌓아보자 > 데이터 엔지니어링' 카테고리의 다른 글
[Airflow] Core Concepts 항목별 요약 (0) | 2024.10.31 |
---|---|
Devops 의 업무 도메인 및 기술 스택 (0) | 2023.10.15 |
docker system df (0) | 2023.07.03 |
데이터 품질의 비밀 - 데이터 품질에 주목해야 하는 이유 ch1 (0) | 2023.05.03 |
데이터 중심 애플리케이션 설계 - 분산시스템의 골칫거리 (2) | 2023.04.28 |
댓글