Airflow 개념
Airflow란?
- Airbnb에서 개발한 workflow scheduling, monitoring platform
- DAG 형식으로 Task들 순서를 조절
- Python으로 코딩 가능
- Web Interface 제공
Airflow의 특성
- Dynamic : Airflow pipeline(동작순서, 방식)을 python code를 통해 구성하기 때문에 동적인 구성이 가능
- Extensible : python을 통해서 operator, executor를 사용자의 환경에 맞게 확장하여 사용하는 것이 가능
- Elegant : 파이프라인이 간결하고 명시적인 형태, jinja template을 기반으로 파라미터화된 데이터를 전달하고 자동으로 파이프라인을 생성하는 것이 가능
- Scalable : 분산구조와 메세지 큐를 이용해 scale out와 워커 간 협업을 지원
Airflow의 구조
- Webserver: Web UI로 workflow 상태를 표시하고 각종 기능(실행, 재시작, 로그, 권한 관리)을 제공
- Scheduler: 모든 작업과 DAG를 관리
- Executor: Task Instance를 실행하는 주체, Worker의 동작방식을 정의
- Worker: 실제 작업을 실행하는 주체
- Broker: 실행가능 작업들이 들어가는 공간
- MetaDB: 파이프라인의 Metadata들(DAG,Task 등)이 저장되어 있는 DB
Airflow 실습
로컬로 설치와 실행까지만 해보았다.
(M1 Macbook에서 진행)
Airflow 설치
export AIRFLOW_HOME=~/airflow
pip install apache-airflow
Airflow DB초기화
airflow db init
Airflow 실행
airflow webserver -p 8080
해주고 localhost:8080으로 접속해주면
과 같은 로그인 창이 나온다. 계정을 생성해주자.
airflow create_user -r role(ex:Admin) -u user_name -e email(ex:bbarroo7425@gmail.com) -f first_name -l last_name -p password
이렇게 계정을 생성해주고 로그인을 해주면
위와 같은 화면을 볼 수 있다. 현재 UI에 표시되어 있는 DAG들 같은 경우에는 기본적인 예제라고 한다.
이를 없애기 위해서는 airflow.cfg 파일의 load_examples=False로 세팅해주면 된다고 한다.
첫 포스팅 끝!