Airflow를 설치하는 방법은 여러가지가 있다. 보통 docker-compose를 사용해서 띄우기는 하지만 airflow를 처음 시작하려는 사람에게는 docker를 사용하는 과정이 허들이 될 수 있다고 생각한다. 따라서 pip install 만으로 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
나는 간단한 테스트 용으로만 띄울것이므로 기본 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 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를 사용해보고 싶은 사람들에게 추천하고 싶다.
As someone who's struggled through countless Docker crashes and dependency hell, this local approach is a game-changer for quick testing. Your tip about standalone mode saved me hours of setup time - though I'd add a few notes from my experience:
For Ubuntu 24.04 users:
The Python 3.7 constraints in your example won't work. Follow for version-compatible commands. I learned this the hard way!
The simplicity of this approach makes it perfect for:
Question: Have you tried this with Airflow 2.8+? I'm curious if the standalone improvements make it even smoother.
Follow the Gudie Install Apache Airflow on Ubuntu 24.04
— DataPipelineNewbie (Airflow convert since 2023)