# Airflow - [[Production Docker Image for Apache Airflow]] - [[Basic Airflow architecture]] - [[Airflow with Docker]] ### 외부 접속을 위해 포트 지정 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 spiderman@superhero.org ### 사용자 삭제 $ 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안에서 정의되는 작업 함수((함수임을 주의하자))이며, 데이터가 처리되고 이동하는 각각의 개별 태스크를 정의하는 함수이다. 이 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 데이터 워크플로우 만들기 ## 출처 - https://whitechoi.tistory.com/50