목록Data Engineering/Airflow (10)
코딜기
Airflow Jinja 템플릿이란?파이썬에서 Jinja 템플릿을 사용하는 것과 비슷하게 Jinja 템플릿을 사용해서 간단하게 데이터를 넘겨줄 수 있습니다.오퍼레이터 파라미터 입력 시 중괄호 2개를 이용하면 Airflow에서 기본적으로 제공하는 변수들을 치환된 값으로 입력할 수 있습니다. (ex: 수행 날짜, DAG_ID)모든 오퍼레이터, 모든 파라미터에 Template 변수 적용이 가능한 것은 아니기 때문에 Airflow 문서에서 어떤 파라미터에 Template 변수 적용 가능한지 확인이 필요합니다.https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/index.html가장 많이 사용하는 Airflow 템플릿 변수dat..

Task Decorator란?파이썬에서 데코레이터를 사용하는 것과 비슷하게 데코레이터를 사용해서 간단하게 Task를 만들 수 있습니다.데코레이터를 사용하면 PythonOperator를 import 할 필요가 없습니다.실행시키는 코드(py_task1 >> py_task2)를 작성할 필요가 없습니다.Task Decorator 사용코드 자체가 간결해진 것을 확인할 수 있습니다.

Email Operator란?이메일을 전송하는 오퍼레이터입니다.이메일 전송을 위해 사전 세팅 작업이 필요합니다.구글 메일 서버를 사용하기 때문에 G-mail에서 사전 세팅 작업이 필요합니다.Docker-compose.yaml 파일의 environment 항목 세팅 작업이 필요합니다.G-mail 세팅1. 사용할 G-mail 계정에 로그인을 한 후 G-mail에서 몇 가지 세팅을 해줍니다.G-mail → 설정 → 모든 설정 보기 → 전달 및 POP/IMAP → IMAP 사용 경로로 이동해 줍니다.2. 구글 계정관리에서 몇 가지 추가 세팅을 해줍니다.구글 계정관리 → 보안 → 2단계 인증 → 앱비밀번호 세팅 경로로 이동해 줍니다.※ 발급된 앱 비밀번호 토큰은 꼭 저장해서 잃어버리지 않게 해야 합니다.Docke..

Airflow에서 외부 파일을 읽기 위한 docker compose yaml 수정Airflow의 Worker 컨테이너는 기본적으로 외부 파일을 인식할 수 없습니다.컨테이너 안에 파일을 만들어주면 컨테이너 재시작 시 파일이 사라집니다. docker compose yaml 파일의 volume 부분을 수정하여 worker 컨테이너가 외부 파일을 읽을 수 있도록 설정해 줍니다.즉, 로컬의 폴더와 airflow의 폴더를 연동시키는 방식이라고 생각하시면 이해하기 편합니다.docker compose yaml 수정방법은 아래 부분을 로컬의 plugins 경로로 바꿔주면 됩니다.${AIRFLOW_PROJ_DIR:-.}은 도커 초기화한 경로이고, 따로 폴더를 수정 및 생성하지 않았다면 아래와 같이 설정해 주시면 됩니다.※..

Airflow.cfg란?airflow.cfg는 Airflow의 실행, 스케줄링, 로깅, 보안 및 통합 등 여러 기능을 설정하는 데 사용됩니다.Airflow 설치 시 기본적으로 생성되는 일반 텍스트 기반의 구성 파일로, INI 포맷을 사용하여 다양한 설정을 선언적으로 정의할 수 있습니다.실행 방식, 스케줄링 매개변수, 데이터베이스 접속 정보, 로깅, 메일 설정 등을 수정할 수 있습니다.파일은 여러 섹션으로 구분되어 있으며, 각 섹션은 Airflow의 특정 기능이나 구성 요소에 관한 설정을 담고 있습니다.Airflow 인스턴스를 업그레이드하거나 변경할 때 주의 깊게 관리해야 합니다.실수로 중요한 설정을 변경하거나 잘못 구성하면 Airflow의 성능이 저하되거나 예기치 않은 동작을 할 수 있습니다.주요 섹션과..

이 포스팅의 과정을 진행하기 전에 EC2 가상환경 구성을 먼저 하시는 것을 추천드립니다.가상 환경에 Airflow 패키지 설치1. Airflow 패키지 설치에 앞서 MySQL 클라이언트를 사용하기 위해 필요한 패키지를 설치해 줍니다.sudo apt install default-libmysqlclient-dev -ysudo apt install python3.8-dev -y2. 설치가 완료되었으면 아래 명령어를 통해 Airflow 패키지 설치를 해줍니다.간단하게 명령어 설명을 하자면, [ ] 안에 들어간 것들이 Airflow에 필요한 패키지들입니다.패키지들을 따로따로 설치하게 되면 사용하는 Airflow의 버전과 Constraints에 맞는 버전이 다르게 설치되어, Airflow가 정상적으로 작동하지 않..

Celery Executor란?Celery를 이용해서 작업을 worker에게 분배하고, 작업 결과를 관리하는 방식의 Executor입니다.Celery Executor ComponentsBasic ComponentWorkers - 할당된 task를 실행Scheduler - 실행해야 할 task를 Queue에 추가Web server - DAG와 task의 상태를 확인하고, 메타데이터 관리, 시각화, admin 명령을 할 수 있는 HTTP serverDatabase - DAG, tasks, Variable, Connection 등 메타데이터를 저장하는 저장소Celery - 스케줄링하는 Queue의 사용방식Celery Component Broker - 실행해야 할 command를 저장 (Queue)Result ..

Airflow 기본 아키텍처Scheduler스케줄 된 워크 플로우를 트리거하고, Executor에게 task를 실행하도록 요청하는 역할을 합니다.기본적으로 1분에 한 번씩 모든 DAG들의 정보를 업데이트하고, 상태정보를 확인합니다.Scheduler는 모든 task와 DAG를 모니터링하고 각각의 task들을 조건에 맞게 트리거합니다.Executortask의 실행을 관리합니다.실제 task의 실행은 Scheduler 내부에서 수행할 수도 있고, 외부의 worker에게 실행을 맡길 수도 있습니다.Executor의 종류Local Executor : 로컬에서 프로세스를 실행시켜 task를 실행하는 방식Sequential Executor : Local Executor와 비슷하지만 로컬에서 한 번에 하나씩만 동작하는..

Airflow Library 설치airflow를 사용하기 위해 필요한 라이브러리를 설치해야 합니다.프로젝트를 위해 만든 가상환경 위에 라이브러리를 설치해야 다른 프로젝트 환경에 영향을 주지 않고 실행할 수 있습니다.1. 아래의 명령어를 프로젝트 가상환경 터미널에 입력해서 라이브러리를 설치해 줍니다.pip install "apache-airflow[celery]==2.9.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"※ 여기서 주의할 점은 꼭 맨 앞에 (venv)가 있는지 확인하고 명령어를 입력해주셔야 합니다. 만약 없다면 가상환경에 접속 후 New Termin..

로컬에서 실행된 Docker에서 Airflow 띄우기모든 과정은 Docker가 설치되어 있는 상태에서 터미널(CMD)에서 진행됩니다.맥북은 터미널창에서 그대로 진행하시면 되시고, 윈도우는 WSL의 리눅스 환경 터미널에서 진행해 주시면 됩니다.1. cd 명령어를 통해 작업을 할 폴더로 이동해 줍니다. 2. airflow를 실행시키기 위해 공식 홈페이지에서 제공하는 docker-compose.yaml 파일을 불러오는 명령어를 실행시켜 줍니다.curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.0/docker-compose.yaml' 3. airflow 사용에 필요한 폴더를 만들어줍니다.mkdir -p ./dags ./logs ./plugins ./c..