[Data Infra] Airflow install

conda env 환경에서 진행하겠다.
설치하기
1. conda create -n airflow python=3.6
2. conda activate airflow 또는 source activate airflow
3. conda install -y -c conda-forge airflow
LocalExecutor를 이용하는 방법
LocalExecutor를 이용하기 위해서는 RDBMS를 이용하여야 한다.
> airflow initdb
홈 밑에 airflow 폴더가 생성된다.
> vi ~/airflow/airflow.cfg
executor = LocalExecutor
sql_alchemy_conn = mysql://id:password@host:port/db
- mysql에 접속하여 DB를 만든다.
> airflow initdb
위의 명령을 실행하면 만들어 두었던 DB에 많은 테이블이 생성된다.
ModuleNotFoundError: No module named 'MySQLdb'
> conda install -y -c anaconda mysqlclient
> airflow scheduler
> airflow webserver
Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
> vi /etc/my.cnf
[mysqld]
explicit_defaults_for_timestamp = 1
> service mysql restart
이게 끝이다.
http://host:8080에 접속하면 많은 example을 나온다.
> vi ~/airflow/airflow.cfg
load_examples = False
> airflow restart
CeleryExecutor를 이용하는 방법
일단, rabbitMQ 부터..
> conda install -c conda-forge rabbitmq-server
> rabbitmq-server -detached
> rabbitmqctl start_app
> rabbitmqctl add_user ID PASSWORD
> rabbitmqctl set_user_tags ID administrator
> rabbitmqctl add_vhost airflow
> rabbitmq-plugins enable rabbitmq_management
마지막 명령어는 web을 통해 관리를 하고자 합니다. 이유는..
rabbitmqctl set_permissions -p airflow ID “.*” “.*” “.*”
rabbitmqctl set_permissions -p airflow ID'.*' '.*' '.*'
rabbitmqctl set_permissions -p airflow ID ´.*´ ´.*´ ´.*´
rabbitmqctl set_permissions -p airflow ID `.*` `.*` `.*`
rabbitmqctl set_permissions -p airflow ID ˝.*˝ ˝.*˝ ˝.*˝
rabbitmqctl set_permissions -p airflow ID ".*" ".*" ".*"
rabbitmqctl set_permissions -p airflow ID ″.*″ ″.*″ ″.*″
rabbitmqctl set_permissions -p airflow ID ′.*′ ′.*′ ′.*′
rabbitmqctl set_permissions -p airflow ID ‘.*’ ‘.*’ ‘.*’
rabbitmqctl set_permissions -p airflow ID ".*" ".*" ".*"
정말 많은 시도를 하였지만.. 다 실패하였다.
http://host:15672 접속
> vi ~/airflow/airflow.cfg
executor = CeleryExecutor
sql_alchemy_conn = mysql://id:password@host:port/db
broker_url = amqp://airflow_ID:airflow_PASSWORD@rabbitmq_server_ip:5672@vhost_name
result_backend = db+mysql://id:password@host:port/db_backend
> airflow worker
ModuleNotFoundError: No module named 'celery'
> conda install -y -c conda-forge celery