airflow 설치가 필요해서 공식문서를 참고해서 작성해놓는다. 기본 설치는 편하지만 데이터베이스를 변경하고 db init 하는 과정에서 계속 에러가 발생하여 기록으로 남김.
0. 기본 환경
- wsl2 우분투
- mysql Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
- 미니콘다로 python 3.9 버전의 가상환경 세팅(원래 우분투에는 python 3.10)
- 기존의 홈디렉토리에 있는 airflow 디렉토리 삭제
만약, mysql 설치가 안됐다면 참고. 2023.01.31 - [Database/mysql] - 빠른 MySQL 기본 설치방법 및 세팅
1. airflow 설치 ( 공식문서 : https://airflow.apache.org/docs/apache-airflow/stable/start.html )
$ vi airflow.sh
vi 편집기로 airflow.sh 쉘스크립트 만들어서 아래와 같이 작성
# Airflow needs a home. `~/airflow` is the default, but you can put it
# somewhere else if you prefer (optional)
export AIRFLOW_HOME=~/airflow
# Install Airflow using the constraints file
AIRFLOW_VERSION=2.3.4
PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
# For example: 3.7
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example: https://raw.githubusercontent.com/apache/airflow/constraints-2.5.1/constraints-3.7.txt
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
pip install PyMySQL #
# The Standalone command will initialise the database, make a user,
# and start all components for you.
# airflow Standalone
# Visit localhost:8080 in the browser and use the admin account details
# shown on the terminal to login.
# Enable the example_bash_operator dag in the home page
$ bash airflow.sh
설치 대부분의 에러는 버전문제로 인해 발생하는 것을 느낌. 공식문서 꼭 확인하기
airflow 버전은 현재 2.5.1 까지 나와있는데 db 변경시 에러가 발생하여 버전을 2.3.4로 낮춤.
파이썬으로 mysql 다룰 거라서 PyMySQL도 같이 추가해 놓음.
standalone 하면 기본 디폴트로 다 해주지만 굳이 필요 없으므로 제거.
설치가 완료되면 홈디렉토리에 airflow가 생성됨
2. db 변경 (공식문서 : https://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html)
airflow 경로로 이동 후 안에 구성파일을 보면 airflow.cfg 파일이 있음 여기서 airflow 기본 설정들을 변경할 수 있음
$ cd ~/airflow
vi편집기로 airflow.cfg 열기
$ vi airflow.cfg
아래로 내리다보면 database가 나옴
편집기에서 '/' 누르면 검색가능 / 누르고 아래 내용 검색
sql_alchemy_conn =
기본은 sqlite 인데 이게 병렬로 돌아가진 않아서 테스트용이고 상용에서는 다른걸로 변경해줘야함. 보통은 postgresql 와 mysql 많이 사용하는것 같음. mysql8로 이미 설치된게 있으니 mysql 사용하고 커넥터는 pymysql 사용할거라
같이 적어줌.
mysql+pymysql://mysql계정:mysql비밀번호@아이피주소나호스트명:포트/airflow_db
다음 mysql 에서 airflow_db 생성해줌.
CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'airflow_user' IDENTIFIED BY 'airflow_pass';
GRANT ALL PRIVILEGES ON airflow_db.* TO 'airflow_user';
여기까지 다 완료됐으면 설정된 값으로 초기화 해줌(혹시나 airflow example dag 보기 싫으면 위의 cfg 에서 수정가능 ( True -> False)
$ airflow db init
변경이 잘 됐는지 확인
$ airflow config get-value database sql_alchemy_conn
잘 변경됐으면 airflow에서 사용할 계정을 생성해야함.
$ airflow users create --username airflow --firstname airflow --lastname airflow --role Admin --password airflow --email airflow@airflow.com
마지막으로 웹서버와 스케줄러 띄우면 끝(이후 airflow 관련 모든 세팅이 끝난 다음에는 nohup으로 띄우기)
$ airflow webserver -p 8080
$ airflow scheduler
모든 순간이 아름다웠다면 아래와 같이 샘플예제가 들어있는 웹ui가 보이며 만약 db 변경을하지 않았다면
노란색줄이 하나 더 있을거임....
설치하면서 느낌점
내가 잘못한게 없으면 버전문제를 바로 떠올리는게 트러블슈팅 해결하는데 가장 빠르다.
댓글