본문 바로가기
IT 개인학습/Memo

Airflow

by kiimy 2022. 5. 7.
728x90

Airflow

- workflow관리

 

Airflow는 Python 코드로 워크플로우(workflow)를 작성하고, 스케쥴링, 모니터링 하는 플랫폼입니다. Airflow를 통해서 데이터엔지니어링의 ETL 작업을 자동화하고, DAG(Directed Acyclic Graph) 형태의 워크플로우 작성이 가능합니다. 이를 통해 더 정교한 dependency를 가진 파이프라인을 설정할 수 있습니다. 또한 AWS, GCP 모두 Airflow managed service를 제공할 정도로 전세계 데이터팀들에게 널리 사용되고 있으며 그만큼 넓은 커뮤니티를 형성하고 있습니다.

 

Apache Airflow 자동화된 워크플로를 예약하는 기능도 제공합니다, 사람의 개입 없이 워크플로가 지정된 시간에 실행됩니다따라서 Airflow 의존하여 다른 주요 비즈니스 활동에 집중하면서 워크플로를 관리할 있습니다 도구에는 사용하기 편리한 직관적인 기반 사용자 인터페이스가 있습니다또한 Airflow 사용하면 이미 설정된 워크플로 외부에서 이러한 작업을 관리해야 하는 경우에 편리한 명령줄 인터페이스를 통해 작업을 실행할 있습니다.

 

* Scheduler : 모든 DAG와 Task에 대하여 모니터링 및 관리하고, 실행해야할 Task를 스케줄링 해줍니다.

* Web server : Airflow의 웹 UI 서버 입니다.

* DAG : Directed Acyclic Graph로 개발자가 Python으로 작성한 워크플로우 입니다. Task들의 dependency를 정의합니다.

* Database : Airflow에 존재하는 DAG와 Task들의 메타데이터를 저장하는 데이터베이스입니다.

* Worker : 실제 Task 실행하는 주체입니다. Executor 종류에 따라 동작 방식이 다양합니다.

1. Airflow는 개발자가 작성한 Python DAG를 읽고, 거기에 맞춰 Scheduler가 Task를 스케줄링하면, Worker가 Task를 가져가 실행
2. Task의 실행상태는 Database에 저장되고, 사용자는 UI를 통해서 각 Task의 실행 상태, 성공 여부 등을 확인할 수 있음

Airflow DAG(Directed Acyclic Graph)

- DataPipeline 의미하는 하나의 단위

Airflow의 DAG는 실행하고 싶은 Task들의 관계와 dependency를 표현하고 있는 Task들의 모음입니다. 어떤 순서와 어떤 dependency로 실행할지, 어떤 스케줄로 실행할지 등의 정보를 가지고 있습니다. 따라서 DAG를 정확하게 설정해야, Task를 원하는 대로 스케쥴링할 수 있습니다.

 

DAG는 작업 자체가 어떻게 구성된지와는 관계 없이

  • 제시간에
  • 정확한 순서로
  • 이슈 없이

작업을 실행시키는데에 책임이 있습니다.

 

Airflow에서 DAG를 인식하기 위해서는 dags folder로 지정된 경로에 존재하는 python 파일"airflow" 혹은 "dag"라는 키워드가 포함되어 있어야 합니다.

 

모든 python 파일을 인식시키기 위해선 DAG_DISCOVERY_SAFE_MODE를 disable로 설정하면 되지만 권장되는 사항은 아닙니다.

 

하나의 작업 단위를 Task라고 하며 하나 또는 여러 개의 Task를 이용해 하나의 DAG를 생성하게 됩니다.

Task 간에는 순서를 지정할 수 있으며, <<, >>를 통해 간단하게 지정하는 것이 가능합니다.

with DAG('my_dag', start_date=datetime(2016, 1, 1)) as dag:

    task_1 = DummyOperator('task_1')

    task_2 = DummyOperator('task_2')

    # task_1을 실행한 후 task_2 실행
	# Define dependencies
    # create >> emr 클러스터 생 >> terminate, <처음과 끝은 항상 설정>
    task_1 >> task_2

 

Airflow Operator

- Task를 만들기 위해 사용되는 Airflow class

각 Airflow DAG는 여러 Task로 이루어져있습니다. operator나 sensor가 하나의 Task로 만들어집니다. Airflow는 기본적인 Task를 위해 다양한 operator를 제공합니다.

  • BashOperator : bash command를 실행
  • PythonOperator : Python 함수를 실행
  • EmailOperator : Email을 발송
  • MySqlOperator : sql 쿼리를 수행
  • Sensor : 시간, 파일, db row, 등등을 기다리는 센서

= Airflow에서 기본으로 제공하는 operator 외에도 커뮤니티에서 만든 수많은 operator들이 있음

 

배치 프로그램, 배치 스케줄러란 ???

배치 프로그램

- 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미한다.

 

배치 스케줄러 Or 잡 스케줄러

- 일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해 주는 도구

 

728x90

'IT 개인학습 > Memo' 카테고리의 다른 글

Deploy  (0) 2022.05.07
Jenkins 젠킨스  (0) 2022.05.07
SQL  (0) 2022.05.07
Train / Validation / Test  (0) 2021.07.07
정규화( Normalization, Standardization, Regularization )  (0) 2021.07.04

댓글