Apache Airflow 활용 1편

1 minute read

이번에는 Airflow 관련하여 그간 진행했던 부분들을 정리해볼 생각이다. Airflow를 사용하게 된 계기는 Retrieval Argument Generation(검색 증강 구현)의 단계인

  • Document Loader
  • Splitting
  • Embedding

의 과정을 들어어는 문서 형식에 따라 “데이터를 가공”하여 “유의미”한 데이터를 만들고자 했고, 이 과정을 Data Pipeline을 통해서 다양한 케이스로 분화시켜서 돌려보고 싶은 마음이 있었고, RAG를 진행하는 과정 중에 데이터 대한 “품질”이 얼마나 중요한가에 대해서 고민하게 되던 당시 부터 다양한 데이터를 내가 만들어든 파이프라인 내에서 동시에 다양한 케이스로 만들어서 돌려볼 수 있었다.

현재 Airflow에서 다양한 데이터를 활용하기 위해서 지원하는 Third Party는 수십가지에 달하는데,

https://airflow.apache.org/docs/ 내의 이미지 참조

정말 활용하기에 따라서 다양한 파이프라인 및 배치, 커스터마이징된 작업을 수행할 수 있다.

그래서 그간 이를 진행했던 과정에 대해서 작성했던 Log를 바탕으로 글을 재정리하여 작성해보고자 한다.

처음 시작하기

airflow는 python 기반으로 되어 있으며, all-in-one standalone 버전으로 아래의 명령어로 사용이 가능하다.

airflow standalone 

all in one 버전으로 사용하지 않고 개별적으로 사용하고 싶을 경우 아래와 같이 명령어를 분리해서 사용이 가능하다.

airflow db migrate

airflow users create \
    --username admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email spiderman@superhero.org

airflow webserver --port 8080

airflow scheduler

서비스 기동후 Dags 중에 테스트 Dags를 정의해서 아래와 같이 명령어로 실행할 수 있다. 아래의 명령어 실행시 동작하는 데이터는 본인이 사용하는 bash 또는 zsh의 환경변수 경로로 지정한 폴더 내에 로그 및 데이터가 생성된다.

# run your first task instance
airflow tasks test example_bash_operator runme_0 2015-01-01
# run a backfill over 2 days
airflow dags backfill example_bash_operator \
    --start-date 2015-01-01 \
    --end-date 2015-01-02

Airflow 자동완성 적용하기 Profile에 추가해서 자동완성 기능을 허용하려면,

# ~/.zshrc 파일 내 추가된 경로 / 해당 폴더경로는 생성되어 있어야함! 

export AIRFLOW_HOME=~/airflow
register-python-argcomplete airflow >> ~/.bashrc

Airflow의 Dags를 추출하는 방법에 대해서 알아보면,

airflow dags show example_complex

airflow dags show example_bash_operator --save example_bash_operator.png

airflow dags show example_bash_operator --imgcat