[airflow] docker의 중요성과 dag의 개념

eve·2022년 11월 30일
0

airflow

목록 보기
1/4

Udemy에서 Marc Lamberti의 'Apache Airflow: The Hands-On Guide'라는 강의를 들으며 데이터 파이프라인 구축에 대한 학습을 시작했다. airflow에 대한 소개는 생략하고 기초 개념들에 대해서만 서술하겠다.



1. Docker를 통한 환경세팅

Docker 없이 개발환경 구축하기

해당 강좌에서는 marc의 깃허브를 통해 docker 파일을 다운로드 받고 가상환경을 구축하여 실습을 진행할 수 있다. 영상에서 알려주는 커맨드들은 linux, ubuntu 기준이어서 맥 유저로서 어려움이 있었다.
나는 도커 파일 설치 수순이 있는 줄 모르고 영상 도입부에서 헤매다가 결국 패키지 하나씩 수동설치했다. 기존에 아나콘다를 사용 중이었으므로, airflow 실습을 위한 가상환경을 추가하여 빌드하였다. dscl 커맨드를 쓰거나 home-brew를 설치하여 강사가 실습 중 언급한 의존성 패키지들을 (wget 등) 설치한 후, 며칠에 걸려 airflow admin 계정을 생성하였다.
그러나 docker 파일을 사용하면 이 모든 것들이 간단하게 해결된다. 개발 환경을 그대로 옮겨주는 것이 docker라고 이해하면 된다.

Docker의 특징

1. os와 별개로 동작하며, 가상 머신보다 가볍다.

(ex. 파이썬 버전을 달리하여 설치)

2. Docker Compose

  • docker의 multi-container 기능이다.
  • airflow에서는 메타 데이터베이스, 웹서버, 스케줄러의 3요소가 있는데, Docker compose를 사용하면 각각의 요소에 컨테이너를 할당한다.
  • airflow 사용 시 전체 재실행이 아니라 필요한 부분만 실행할 수 있어 메모리 효율에 효과적인 기능이다.
  • docker desktop을 설치하여 확인하는 것을 추천한다. gui를 제공하여 docker 자체의 업데이트 등을 손쉽게 확인하고 진행할 수 있다.


1. Dag

airflow는 크게 dag와 operater라는 기능으로 구성되어 있다. dag의 약자는 Directed Acyclic Graph로, 데이터 파이프라인 그 자체를 의미한다.

특징

  • node와 edge로 구성된 그래프이다.
  • 루프가 없으며, 각 노드 간 개별성을 보장한다.
  • 각각의 노드는 task를 의미한다.
  • 각각의 엣지는 taks 간의 의존성을 의미한다. (개별성-의존성이 공존)

실습

  • 먼저, 파이프라인을 위한 .py 확장자명 파일을 생성한다.
  • DAG, datetime, timedelta 등의 모듈을 임포트해주어야 사용 할 수 있다.
from airflow import DAG
from datetime import datetime, timedelta
with DAG():
  • default 인자들을 설정하는 변수를 선언하여 with DAG안에 넣어준다.
  • DAG 함수 안에 들어가는 파라미터 종류들은 다음과 같다.
    * 파라미터 (1) - dag id (dag의 유니크 id값)
    * 파라미터 (2) - startdate (dag 시작일자)
    * 파라미터 (3) - schedule_interval (dag trigger 간격)
    * 파라미터 (4) - default_args (task 적용되는 파라미터)
    * 파라미터 (5) - catchup=False (기존 dag 로그까지 포함하지않음)
    예를들어, 스케줄러의 interval를 매일로 지정해 줄 경우, 매일 자정 dag가 실행된다.


operator에 대한 내용은 이후 강의 수강 후 작성하려 한다.

profile
유저가 왜 그랬을까

0개의 댓글