Airflow
외부 접속을 위해 포트 지정
airflow webserver -p 8080
Tutorial
- airflow-tutorial: https://github.com/tuanavu/airflow-tutorial
설치
pip3 install apache-airflow --use-feature=2020-resolver
사용자 생성
$ airflow users create \ --username admin \ --firstname Peter \ --lastname Parker \ --role Admin \ --email [email protected]
사용자 삭제
$ airflow users delete -u admin User admin deleted
DB reset
airflow db reset
웹서버 실행
# start the web server, default port is 8080 airflow webserver --port 8080
Airflow의 구조
DAG (Directed Acyclic Graph)
여러 개의 테스트가 합쳐져서 동작하는 하나의 데이터 워크 플로우를 말한다. DAG은 파이썬 코드를 기반으로 사용자가 정의하고 실행된다. 예를 들면 CloudSQL에서부터 데이터를 가져와서 빅쿼리까지 적재하는 모든 개별 구간(태스크)을 합쳐 하나로 만든 데이터 파이프라인이 DAG이 된다.
Operator and Task
Operator는 DAG안에서 정의되는 작업 함수1)이며, 데이터가 처리되고 이동하는 각각의 개별 태스크를 정의하는 함수이다.
이 Operator가 DAG이 실제로 데이터 워크플로우에 정의되고 실행되면서 호출 된 것이 Task이다. 조금 더 이해를 돕기 위해 부연설명을 덧붙이자면, 객체지향 언어에서의 Operator가 Class라면, Task는 object라고 보면 된다.
Airflow 설치하기
// 환경 변수 설정 $ export AIRFLOW_HOME=~/airflow // Airflow 설치 $ pip install airflow // DB 초기화 $ airflow initdb // 웹 서버 실행 $ airflow webserver -p 8080
Airflow 설정 파일 수정하기
Airflow의 설치가 완료되었다면, Airflow의 정상적인 동작을 위해 설정파일($AIRFLOW_HOME/airflow.cfg)을 수정하여야 한다. VI등의 편집기를 이용해서 설정 파일의 내용을 아래와 같이 수정한다.
... # Are DAGs paused by default at creation // True -> False로 변경 dags_are_paused_at_creation = False ... # Whether to load the examples that ship with Airflow. It's good to # get started, but you probably want to set this to False in a production # environment // True -> False로 변경 load_examples = False ...
ETL 서버 SSH연결 설정
데이터 워크플로우의 동작을 위해서는 Airflow가 구성된 서버에서 ETL서버로의 SSH 원격 명령 실행이 필요하다. ETL서버에 대한 원격SSH연결 설정을 위해 아래와 같이 Airflow 웹 서버를 실행시킨 상태에서 웹 콘솔의 상단의 Admin → Connections메뉴로 이동한다.
Airflow 데이터 워크플로우 만들기
출처
관련 문서
1)
함수임을 주의하자