1에 이어 이제 airflow와 python 그리고 설정까지 진행하고자 한다.
sudo apt install python3
# 기존에 3.10.12가 설치되어 있는경우였다
sudo apt install python3-pip -y
python3 -m pip install virtualenv
python3 -m virtualenv --version
## 결과
virtualenv 20.24.6 from /ho ~~
mkdir ~/airflow
cd ~/airflow
virtualenv env
ls -al
source env/bin/activate
sudo apt install direnv
vim ~/.bashrc
해당 내용 추가
eval "$(direnv hook bash)"
show_virtual_env() {
if [[ -n "$VIRTUAL_ENV" && -n "$DIRENV_DIR" ]]; then
echo "($(basename $VIRTUAL_ENV))"
fi
}
export -f show_virtual_env
PS1='$(show_virtual_env)'$PS1
vi .envrc
echo "Load direnv"
source ./env/bin/activate
direnv allow
airflow는 mysql celery, redis등 버전 충돌이 진짜 많이 발생하기에 constraint 파일을 제공하고 이를 활용하는게 매우 중요하다.
pip install "apache-airflow[celery,mysql,redis,crypto,statsd]==2.5.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.5.0/constraints-3.10.txt"
airflow.cfg 파일 변경
sql_alchemy_conn = mysql+mysqldb://airflow:airflow@localhost:3306/airflow_db
default_timezone = Asia/Seoul
executor = CeleryExecutor
sql_alchemy_conn = mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
broker_url = redis://:redisde@$your_redis_url:6379/0
result_backend = db+mysql://airflow:airflow@$your_host:3306/airflow_db
정상적으로 완료시
mysql> show tables;
+--------------------------------+
| Tables_in_airflow_db |
+--------------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| alembic_version |
| callback_request |
| connection |
| dag |
| dag_code |
| dag_owner_attributes |
| dag_pickle |
| dag_run |
| dag_run_note |
| dag_schedule_dataset_reference |
| dag_tag |
| dag_warning |
| dagrun_dataset_event |
| dataset |
| dataset_dag_run_queue |
| dataset_event |
| import_error |
| job |
| log |
| log_template |
| rendered_task_instance_fields |
| serialized_dag |
| session |
| sla_miss |
| slot_pool |
| task_fail |
| task_instance |
| task_instance_note |
| task_map |
| task_outlet_dataset_reference |
| task_reschedule |
| trigger |
| variable |
| xcom |
+--------------------------------+
airflow webserver -D