EC2 Airflow 설치하기(2)

록스블로그·2023년 11월 4일
0

1에 이어 이제 airflow와 python 그리고 설정까지 진행하고자 한다.

Python/ Pip 설치

sudo apt install python3
# 기존에 3.10.12가 설치되어 있는경우였다
sudo apt install python3-pip -y

Virtual ENV 설치

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

Direnv 설치를 통해 경로 env화

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 패키지 설치

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

Airflow DB INIT

정상적으로 완료시

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

profile
어려움에 성장하는 데이터 엔지니어

0개의 댓글