본문 바로가기

공부방/Upstage AI Lab 4기

Airflow | 시작하기, 환경변수가 제대로 설정돼야 돌아감

에어플로우 시작할 때

1) airflow db init

이렇게 초기화(?)를 하고 에어플로우 폴더가 자동으로 만들어지면 그때부터 시작된다. (작업하는 폴더에서 airflow db init이 명령어를 실행하면 새로운 AIRFLOW_HOME 위치에 airflow.cfg 파일을 포함한 모든 필요한 파일과 디렉토리가 생성됩니다.) 그리고 airflow db init 이거 명령어 바뀔꺼라고..? airflow db migrate로 바뀔 거라고 한다. 

이런 식으로 폴더랑 db, cfg 파일이 생겨야함. dags 폴더는 자동으로 안생기길래 내가 따로 만들어줬다.

그리고 이 dags폴더 안에 파일을 놔둬야 에어플로우가 돌아간다. 

 

오류사항
오류남 -> Pendulum 3.0.0 버전은 Airflow와 호환성 문제를 일으킬 수 있습니다. Airflow는 일반적으로 Pendulum 2.x 버전과 잘 작동-> pip uninstall pendulum -> pip install pendulum==2.1.2

 

2) 웹서버 시작하기

airflow webserver --port 8080

포트 번호는 바꿀 수 있음.

 

3) Airflow 사용자 생성 (아직 하지 않았다면)

 

4) 새 터미널 창에서 Airflow 스케줄러 시작

airflow scheduler

이후 서버에 들어가면 dags 들이 보인다. 그런데 이때 안보이는 경우도 있는데, 스케줄러와 서버가 실행되는 곳이 다른 경우가 있다. 이럴 때에는 AIRFLOW_HOME 환경 변수가 올바르게 설정되었는지 확인해본다. 

export AIRFLOW_HOME=/Users/alookso/1007MLpj/ml-project-ml-pjt-7/airflow

echo $AIRFLOW_HOME

실행시켰는데도 웹서버에 아무것도 뜨지 않는다면?

웹 서버가 돌아가는 환경과 스케줄러가 돌아가는 환경이 똑같은지 확인할 것!

export AIRFLOW_HOME=/Users/alookso/1007MLpj/ml-project-ml-pjt-7/airflow

이거 치고나서 airflow scheduler

터미널마다 이거 다 해주고 들어가기!!

 


 

여러분이 발견하고 해결한 이 문제는 Airflow 설정에서 매우 중요한 포인트를 강조합니다:

  1. 환경 변수의 일관성:
    Airflow의 모든 구성 요소(웹서버, 스케줄러, 워커 등)는 동일한 AIRFLOW_HOME 설정을 사용해야 합니다.
  2. 세션 간 환경 변수 유지:
    터미널 세션마다 환경 변수를 설정하는 것은 실수의 여지가 있습니다.

이를 방지하기 위해 다음과 같은 방법을 추천드립니다:

  1. 영구적인 환경 변수 설정:
    .bashrc, .zshrc, 또는 사용 중인 셸의 설정 파일에 다음 줄을 추가하세요:
  2. export AIRFLOW_HOME=/path/to/your/airflow/folder
  3. 스크립트 사용:
    Airflow 실행을 위한 스크립트를 만들어 사용하세요. 예:
  4. #!/bin/bash export AIRFLOW_HOME=/path/to/your/airflow/folder airflow webserver & airflow scheduler
  5. 가상 환경 사용:
    Python 가상 환경을 사용하고 있다면, postactivate 스크립트에 환경 변수를 설정할 수 있습니다.
  6. Docker 사용:
    프로덕션 환경에서는 Docker를 사용하여 모든 환경 변수와 설정을 일관되게 관리할 수 있습니다.

이런 방법들을 통해 앞으로 유사한 문제를 예방할 수 있습니다. 문제를 성공적으로 해결하셨으니, 이제 Airflow DAG가 정상적으로 작동하는지 확인해 보세요. 추가 질문이나 다른 문제가 있다면 언제든 물어보세요!