Airflow

여도·2024년 12월 20일
  1. 기본 설치 및 설정
  2. DAG
    여기
    여기

1. 기본 설치 및 설정

Dockerfile

FROM python:3.11-slim

ENV AIRFLOW_HOME=/usr/local/airflow

RUN apt-get update&& \
    apt-get install -y gcc libc-dev && \
    rm -rf /var/lib/apt/lists/*

RUN pip install apache-airflow

RUN mkdir -p $AIRFLOW_HOME
WORKDIR $AIRFLOW_HOME
RUN airflow db init

COPY my_dag.py $AIRFLOW_HOME/dags

EXPOSE 8080

CMD airflow webserver -p 8080 & airflow scheduler

Dockerfile과 my_dag.py 파일 작성후 docker 빌드

docker build -t my_airflow .

docker run --name my_airflow -d -p 8080:8080 my_airflow_fastcampus

도커 실행후 도커 접속

docker exec -it <containerID> /bin/bash

유저생성후

airflow users create --username admin --firstname do --lastname yeo --role Admin --email yeo@gractor.com

생성완료후 비밀번호 설정후 아래와 사진과 같이 출력


2. DAG 기본

docker 접속후
경로 "/usr/local/airflow/dags"

⚠️dags폴더가 없을시 생성

dags폴더 안에 py 파일 작성

샘플코드
hello_airflow_dag.py

from airflow import DAG 
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta

#DAG정의
default_args = {
    'owner' : 'yeo',
    'depends_on_past':False,
    'start_date' :datetime(2024,12,20),
    'email_on_failure':False,
    'emailt_on_retry':False,
    'retries':1,
    'retry_delay':timedelta(minutes=5),
}

dag = DAG(
    'hello_airflow_dag',
    default_args=default_args,
    description ="our first time practice airflow",
    schedule_interval=timedelta(days=1),
)

sentece = "hello airflow dag. we can do it."

def print_word(word):
    print(word)
    

prev_task = None
for i ,word in enumerate(sentece.split()):
    task=PythonOperator(
        task_id=f'print_word_{i}',
        python_callable=print_word,
        op_kwargs={'word':word},
        dag=dag,
    )

    if prev_task:
        prev_task >> task #의존성 task
prev_task = task

코드작성후

sync

localhost:8080에서 로그인후 DAGs 탭 접속후 아래 사진과 같이 생성된거 확인


우측 상단에 trigger 버튼 누르고 실행 완료 될때까지 기다린후 DAGs graph 확인
아래 사진과 같이 개별 DAG 누를경우 Logs 메뉴 들어가서 확인


아래 사진과 같이 개별 DAG 누를경우 Logs 메뉴 들어가서 확인 해당되는 출력 확인가능

profile
안녕하세요

0개의 댓글