일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 데이터 엔지니어
- delete join
- 백준 온라인 저지
- Pseudo Lab
- Spark
- 그리디
- Python
- leetcode
- docker container
- SQL
- Airflow
- terraform
- airflow architecture
- MySQL
- docker
- telegram
- BOT
- airflow webserver
- 2023년 목표
- Dynamic Programming
- data_engineer
- datacamp
- Data Engineering
- 프로그래머스
- dsf
- docker image
- 알고리즘
- 빅데이터를 지탱하는 기술
- 백준온라인저지
- hackerrank
Archives
- Today
- Total
Lim Seunghyun Space
Airflow 본문
Airflow
- 워크플로우 작성, 에약 및 모니터링하는 플랫폼
Airflow를 쓰는 이유
- ETL을 구현한 Python 스크립트를 하나 가동하는데는 cronjob으로 돌려도 상관없지만, 다수의 ETL 스크립트를 cronjob으로 가동하는 경우 아래와 같은 문제점이 있다.
- 모니터링 : 스크립트가 잘 가동되고 있는지 확인하기 어렵다.
- 의존성 문제 : ETL간 의존성이 있는 경우 상위 ETL이 잘 가동되고 있는지 확인하기 어렵다.
- 실패 복구 : 스크립트에서 에러 발생시 언제부터 언제까지 어떻게 다시 실행할 것인지 불명확하다, Backfill의 이슈도 있다.
- 분산된 환경에서 중앙으로 ETL을 관리하기 어렵다.
- 위의 문제점을 Airflow에서 해결할 수 있다.
Airflow 컴포넌트
- 웹 서버 : 웹 대시보드
- 스케쥴러 : 워크플로우의 스케쥴링
- Metastore : 메타데이터 DB
- Executor : Task가 어떻게 실행되는지 정의
- Worker : Task를 실행하는 프로세스
DAG (Directed Acyclic Graph)
- 방향은 있으면서 순환하지 않은 그래프
- 1,2,3 순서대로 진행하면서 이전 단계가 완료되면 다음 단계로 넘어가는 형태
- 3번이 완료되면 DAG는 종료
- 1,2,3을 각각 Task라고 함
Task
- 하나 이상의 Task로 DAG를 구성
- Task 간에 순서를 지정할 수 있고, 의존성 지정도 가능하다.
extract = PythonOperator(
...
)
transform = PythonOperator(
...
)
load = PythonOperator(
...
)
extract >> transform >> load
- Operator로 Task를 생성하고 ">>"을 이용하여 extract -> tranform -> load 라는 의존성 지정
Operator
- Task를 정의하는 요소
- Python으로 Operator을 구성할 수 있는 PythonOperator, Bash로 Operator을 구성할 수 있는 BashOperator 등이 있다.
- operator 종류는 아래에서 확인 가능
728x90
'Data Engineering > Airflow' 카테고리의 다른 글
airflow WEB UI - DAG Details (0) | 2022.01.20 |
---|---|
airflow Web UI 살펴보기 - DAGs (0) | 2022.01.20 |
airflow user 관리 (0) | 2022.01.20 |
Airflow 구조 (0) | 2022.01.20 |
[Airflow] Airflow 설치 (0) | 2021.12.03 |