앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 55 - Intro to Airflow

양갱맨 2021. 10. 18. 09:43

데이터 엔지니어링이란?

  • 엔지니어링은 데이터와 관련된 모든 작업을 적용하고 안정적이고 반복 가능하며 유지 관리가 가능한 프로세스로 만드는 일이다.

워크 플로우?

  • 데이터 엔지니어링 작업을 수행하기 위한 일련의 단계
    • 파일을 다운로드 받고, 데이터 복사하고, 필터링하고 데이터베이스에 쓰는 작업 등
  • 사용자 요구에 따라 다르게 다양한 수준의 복잡성을 갖는다.
  1. 판매 데이터 다운로드
  1. 데이터 전처리
  1. ML 파이프라인 실행
  1. 결과 웹서버에 업로드
  1. CEO에게 보고

Airflow

  • 워크 플로우를 프로그램하기 위한 플랫폼Airflow만 엔지니어링 워크플로우를 사용하기 위한 도구는 아니다.
  • Luigi, SISS, Bash scripting으로도 가능하다.
  • 워크플로우 생성, 스케줄링 및 모니터링을 포함한다.
  • Airflow는 다양한 언어를 사용할 수 있지만 실제 워크 플로우 코드는 Python으로 작성된다.
  • Airflow는 워크 플로우를 DAG(Directed Acyclic Graphs)로 구현하고 있다.
  • Airflow는 코드, 커맨드, 웹 인터페이스를 통해 액세스 가능하다.

DAG 다시 보기

  • Airflow는 워크플로우를 구성하는 작업을 DAG로 나타낸다.
  • 작업들 간 종속성으로 구성된다.
  • 다양한 세부정보를 포함하고 있다.
etl_dag = DAG( 		dag_id = 'etl_pipeline', 		default_args={"start_date":"2020-01-08"} )

Airflow에서 workflow 실행

airflow run <dag_id> <task_id> <start_date>

위 명령으로 간단하게 실행이 가능하다.

만약, DAG이름이 example-etl이고 작업이름이 download-file, 2020-01-10이 시작날이라면 다음 명령을 사용한다.

airflow run example-etl download-file 2020-01-10

airflow내 지정된 작업이 실행된다.


Airflow DAGs

DAG에 대해 좀 더 자세히 보자.

  • Directed라는 것은 요소들 간 종속성이 있다는 것을 의미한다.
  • Acyclic은 루프가 발생하지 않아 구성 요소 실행이 한 번만 된다.
  • Graph는 구성요소간 집합이다.
  • DAG는 다른 곳에서도 자주 사용되는 용어
  • Airflow에서 DAG를 기본적으로 파이썬으로 구현했지만 Bash 스크립트, 기타 실행 파일, spark 잡업 등을 포함하고 있다.
  • Airflow DAG에는 명시적 또는 암시적으로 정의된 종속성이 포함된다.

DAG 정의하기

from airflow.models import DAG  from datetime import datetime default_arguments = { 	'owner':'jdoe', 	'email': 'jdoe@datacamp.com', 	'start_date': datetime(2020, 1, 20) }  etl_dag = DAG('etl_workflow', default_args=default_arguments)

커맨드 명령을 통해서 DAG를 다루고 싶다면 airflow -h를 사용해서 하위 명령에 대한 설명을 참고하면 된다.

airflow list_dags : 인식된 모든 DAG를 볼 수 있다.

커맨드 라인과 파이썬의 차이

커맨드 라인을 사용하면...

  • 일반적으로 Airflow 프로세스들을 시작할 때 사용한다.
  • 수동으로 DAG 또는 작업들을 실행시킬 수 있다.
  • Airflow로부터 정보를 얻을 수 있다.

파이썬을 사용하면...

  • DAG를 만들고 편집할 수 있다.

Airflow web interface

Airflow는 web UI를 제공한다.

graph view, tree view, code(읽기전용) 등 다양하게 DAG에 대한 컨텐츠를 확인할 수 있다.