728x90
Airflow란?
Airflow
- Workflow를 정의하고 실행 가능한 플랫폼
- 반복된 작업을 자동화하기 위해 사용
- 각 작업들은 DAG를 통해 구조화
Airflow의 장점
- 연결 된 화살표 방향 순서대로 작업을 실행하고, 분기 실행과 병렬 실행이 가능함
- 각 작업들을 독립 된 단위로 나눠서 개발, 실행 순서를 조정하는 방법으로 모듈화 가능
- 데이터의 추출, 가공, 적재 기능을 나눠서 개발하고 Airflow는 이 작업들을 연결하여 파이프라인으로 배치
Airflow 구조
Airflow는 Scheduler가 DAG Directory의 작업을 가져와서 Worker에서 실행하는 형태
Scheduler | Airflow의 DAG와 작업들을 모니터링하고 실행 순서와 상태 관리 |
Worker | Airflow의 작업을 실행하는 공간 |
Metadata Database | Airflow에서 실행 작업에 관한 정보들을 저장 |
Webserver | Airflow의 User Interface 제공 |
DAG Directory | Airflow에서 실행 할 작업들을 파이프라인 형태로 저장 |
DAG
DAG (Directed Acyclic Graph)
- Airflow에서 실행 할 작업들을 순서에 맞게 구성한 Workflow를 의미
- DAG를 구성하는 각 작업들을 Task라고 함
- 일반적인 Python 코드로 정의함
DAG 코드 구조
라이브러리 import | DAG & 워크플로우 구성에 필요한 라이브러리 선언 |
공통 변수 정의 | DAG 구성에 사용하기 위해 공통으로 사용하는 변수 정의 변경이 자주 발생하는 경우 Variables 기능 활용 |
DAG 공통 속성값 | DAG를 정의하는데 필요한 공통 속성 값 정의 |
DAG 정의 | DAG를 선언하고 공통 속성값 전달 |
Task 정의 | DAG에 포함 될 각 작업(Task) 정의 Operator, Sensor, Hook 등을 사용 |
Task 배열 | 각 작업(Task)들의 순서들을 나열, <<,>> 같은 Shift 연산자 사용 |
Task
Task
- 가장 작은 작업단위로 성공/실패/재시도가 가능한 최소 단위
- Task는 Operator, Sensor, Hook 등을 사용하여 정의
- 여러 Task 간의 순서, 조건 등을 정의해서 DAG를 생성
Operator
- 미리 정의된 다양한 Operator를 가지고 Task 생성 가능
- Python 코드를 실행하거나 Shell 스크립트를 실행 하는 등 다양하게 활용 가능
- BaseOperator를 상속해서 Custom 도 가능함
Sensor
- 어떤 결과를 만족하는 지 등 외부 이벤트를 주기적으로 체크하는데 사용
- 특정 조건을 검사해서 해당 조건을 통과해야 다음 Task를 진행 하게 할 수 있음
- 조건을 만족할 때까지 Worker 슬롯을 무기한 점유하므로 주의해서 사용
- Worker는 한정된 자원이기 때문에, poke_interver, timeout, mode 설정을 적절히 조합해서 사용
Hook
- DB나 서비스 같은 외부 시스템과 통신하기 위한 인터페이스를 제공, 연결 상태를 유지
- 데이터베이스나 클라우드에 데이터가 저장되어 있는 경우가 많음
- 쿼리 결과를 가공하거나 추가 쿼리가 필요한 경우엔 Hook을 사용하면 유용
TaskFlow
TaskFlow
- DAG를 간단하게 작성할 수 있도록 해주는 기능
- 간단한 워크플로우를 쉽게 작성하기 위해 Airflow에서는 TaskFlow를 제공
- Python 데코레이터를 사용해 DAG와 Task 구성을 쉽게 작성 가능
참조
https://magpienote.tistory.com/192
https://humbledude.github.io/blog/2022/11/30/airflow-basics-1/
반응형
'💾 Data > Airflow' 카테고리의 다른 글
[Airflow] Airflow Pipeline 생성 (2) (0) | 2023.03.28 |
---|---|
[Airflow] Airflow 용어 정리 (2) (0) | 2023.03.24 |
[Airflow] Airflow Pipeline 생성 (1) (0) | 2023.03.23 |
[Airflow] Airflow Dag Task 옵션 값 (0) | 2023.03.21 |
[Airflow] Airflow DB & DB 변경 (0) | 2023.03.14 |