초간단 로컬에서 airflow 띄워보기

rang-dev·2023년 2월 12일
1
post-thumbnail

Airflow를 설치하는 방법은 여러가지가 있다. 보통 docker-compose를 사용해서 띄우기는 하지만 airflow를 처음 시작하려는 사람에게는 docker를 사용하는 과정이 허들이 될 수 있다고 생각한다. 따라서 pip install 만으로 airflow를 로컬에 간단히 띄우는 방법을 공유해보고자 한다.

설치하는 방법은 공식 문서를 참고 했으며 더 자세한 내용은 해당 문서를 참고하자.

선행 작업(권장)

  • virtualenv 또는 pyenv-virtualenv 환경에서 실행하기를 권장한다.

Airflow 설치

원하는 python과 airflow 버전에 따라서 아래의 명령어를 수정하여 pip install 해주면 된다.

[공식문서 예시]

pip install "apache-airflow[celery]==2.5.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.5.1/constraints-3.7.txt"

[실행한 명령어]

pip install "apache-airflow==2.3.3" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.3.3/constraints-3.7.txt" --use-feature=2020-resolver
  • 사용하는 Python 버전: 3.7
  • Airflow 버전: 2.3.3

나는 간단한 테스트 용으로만 띄울것이므로 기본 airflow에 내가 사용하고자하는 airflow 버전과 python 버전을 명시해주었다. 뒤에 --use-feature는 설치하는 도중에 error가 발생해서 추가해주었다.

설치하다가 ERROR: Could not satisfy constraints for 'apispec': installation from path or url cannot be constrained to a version라는 에러가 나긴 했는데 실행에 문제가 되진 않았다.

설치 확인

아래의 명령어로 airflow가 잘 설치되었는지 확인한다. 설치시 지정해주었던 2.3.3 버전으로 잘 설치되었음을 확인할 수 있다.

> airflow version
2.3.3

airflow 띄우기

airflow help로 실행 가능한 명령어들을 보면

standalone     Run an all-in-one copy of Airflow

standalone 명령어를 확인할 수 있다. 단, 기본으로 생성되는 path 이외의 다른 path를 사용하고자 한다면 AIRFLOW_HOME 경로로 지정해줘야한다. 이렇게 하면 standalone을 수행할때마다 AIRFLOW_HOME을 설정해줘야하기 때문에 번거로운 부분이 있다.

export AIRFLOW_HOME={PATH}

airflow standalone으로 airflow를 실행하게 되면 홈 디렉토리에 airflow라는 폴더가 생성된다.

실행을 하게 되면 아래와 같이 임시 id, password가 발급이 되고 localhost:8080으로 접속하여 해당 계정을 넣어주면 된다. 비밀번호는 생성된 airflow 폴더의 standalone_admin_password.txt 파일에서도 확인 가능하다.

dag을 작성하기 위해서는 생성된 airflow 폴더 내에 dags 폴더를 생성해주고 원하는 dag을 작성해준다.

나는 아래와 같은 코드로 간단히 테스트를 해보았다.

# test.py

import pendulum
from airflow import DAG
from airflow.operators.python import PythonOperator

with DAG(
    dag_id="test_python_operator",
    schedule_interval=None,
    start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
    catchup=False,
    tags=["hyunlang"],
) as dag:

    def test():
        print("this is a test")

    run_this = PythonOperator(
        task_id="test",
        python_callable=test,
    )

airflow에 dag이 잘 떴고, 실행도 성공했다.

처음에 airflow를 띄우게 되면 직접 생성하지 않은 example dag들이 여러개 있는데 만약 이러한 dag들이 필요 없다면 생성된 airflow 폴더에서 airflow.cfg에서 load_examples = False로 설정(기본은 True로 되어있음)하고 airflow를 실행하고 있는 터미널에서 cmd(ctrl) + c로 중지하고 standalone으로 다시 띄워주면 된다.

만약 백그라운드에서 airflow가 이미 실행중인데 standalone을 하게되면 [ERROR] Connection in use가 발생하는데 이런 경우는 ps | grep airflow로 airflow를 실행하고 있는 프로세스를 kill 해주고 띄우면 된다.

마무리

나도 그동안 docker-compose로만 airflow를 띄워서 썼었는데 이렇게 간단히 로컬에 설치할수도 있다는 것을 동료 분으로부터 듣게 되었고 직접 설치해보니 방법도 매우 간단했다. 또한 docker로 띄우는 것보다 제약은 있겠지만 간단한 테스트를 하는데 무리가 없었기에 airflow를 사용해보고 싶은 사람들에게 추천하고 싶다.

profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

0개의 댓글