ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Airflow] 설치, 초기 세팅
    Programming/Network & cloud 2024. 2. 29. 19:44

    변성윤님의 Airflow 강의를 실습하면서 나를 위해 다시 정리해보았다.

    데이터 관리나 모델 서빙에서 자주 쓰이는 도구이니 사용법을 잘 알아놔야겠다.

     

     

     

    Airflow란?

    • Airbnb에서 개발
    • 스케줄링 및 워크플로우 도구
    • 데이터 처리 파이프라인을 효율적으로 관리
    • web UI 제공

     

     

     

    Airflow 설치하기

     

    directory 만들고 이동 후,

    1. 가상환경 설정

    python -m venv.venv
    source .venv/bin/activate

     

     

     

    2. 설치

    pip3 install pip --upgrade
    
    
    AIRFLOW_VERSION=2.6.3
    PYTHON_VERSION="$(python --version | cut -d" " -f2 | cut -d"." -f1-2)"
    CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
    pip3 install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

     

     

     

     

    3. Airflow에서 사용할 DB 초기화

    # 현재 폴더에서 작업하기 위한 설정
    export AIRFLOW_HOME=`pwd` 
    
    # 확인
    echo $AIRFLOW_HOME
    
    airflow db init

    이때 'pwd'가 아니라 `pwd`임을 주의.

    엔터 옆의 '' 가 아니라 숫자키 옆의 `임.

    만약 ''로 하면 init할때 에러 발생함

     

     

    ls 명령어로 확인하면

    airflow.cfg  airflow.db  logs  pwd  webserver_config.py 

    이렇게 출력이 되는데

    airflow.cfg : Airflow 설정파일

    airflow.db : Airflow DB (여기서는 SQLite 사용)

     

     

    airflow.cfg 파일을 열어서

    이 부분으로 예제 파일을 on/off 할 수 있음

     

     

     

     

    4. 계정 생성

    airflow user create --username {name} --password '{password}' --firstname {fname} --lastname {lname} --role Admin --email {email}

    이런식으로 입력해준다.

    괄호는 당연히 개인의 설정 값으로 바꿔주면 된다.

     

     

     

     

     

    5. Ariflow Webserver 실행

    airflow webserver --port 8080

     

    이런식으로 출력되면 성공!

     

     

    web에서 로그인하면 아래와 같은 화면이 나온다.

    바람개비 로고에 마우스를 갖다 대면 빙글빙글 돌아간다! ㅋㅋㅋ

    DAG이 여러개 출력되는 이유는 load_examples = True로 했기 때문

     

     

     

     

    6. Scheduler 실행하기

     

    새로운 터미널을 만들고 가상환경을 실행한다.

    source .venv/bin/activate
    export AIRFLOW_HOME=`pwd`
    airflow scheduler

     

    이후에 web에서 새로고침하면 아까 나오던 scheduler 관련 에러가 사라져있다.

     

     

    에러 사라짐!

     

     

     

     

     

    만일 Port에 이슈가 있다면 (껐다 켰다 하는데 제대로 안 꺼졌을 수 있음)

    kill $(lsof -t -i:{post번호})

    로 kill 해준다.

     

     

     

     

    7. 새로운 터미널에서 dags 라는 폴더를 만들고 파이썬 파일을 만든다.

    mkdir dags
    cd dags
    # DAG 파일 만들기

     

     

    8. 웹에서 새롭게 만든 DAG 파일을 확인한다.

     

    web, scheduler를 껐다 키면 빠르게 반영된다.

     

    맨 왼쪽의 토글 버튼을 활성화 시킨 후 hello_world를 클릭하면 아래와 같은 페이지가 나온다.

     

     

     

     

    Slack과도 연동해서 실패알림을 전달할 수 있음 : 모니터링

    (Slask API 사용)

     

     

     

     

    댓글

Designed by Tistory.