airflow使用mysql數據庫,LocalExecutor並發調度(1)


  安裝Mysql  (否則后面 pip install  mysql)  無法安裝

#ubuntu sudo apt-get install libmysqlclient-dev 

pip 依賴:

pip install apache-airflow[celery,crypto,mysql,password,redis]

 airflow-LocalExecutor

mysql-airflow

 

 pip install mysqlclient

 

在mysql上執行

create database airflow; —— 創建數據庫

GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY '123456'; —— 將數據庫airflow的所有權限授權airflow用戶,密碼123456且該用戶可在任何IP段登錄操作

FLUSH PRIVILEGES; —— 刷新權限

set explicit_defaults_for_timestamp = 1;

修改airflow配置文件airflow.cfg

sql_alchemy_conn = mysql://airflow:123456@mysqlIP/airflow

修改執行器,使airflow並發調度任務

修改配置文件airflow.cfg

executor = LocalExecutor

重啟scheduler即可(默認並發調度16)

初始化數據庫

airflow initdb

若之前使用sqllite初始化過可使用airflow resetdb

 
irflow initdb :

出現異常:Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql

 

解決方式:

https://airflow.readthedocs.io/en/stable/faq.html#how-to-fix-exception-global-variable-explicit-defaults-for-timestamp-needs-to-be-on-1
docker exec -it meu_mysql /bin/bash
 
cd /etc/mysql/
 
 
root@8ab0b9bd6a08:/etc/mysql/conf.d# cat mysql.cnf 
[mysql]
root@8ab0b9bd6a08:/etc/mysql/conf.d# echo '[mysqld]' >> mysql.cnf 
root@8ab0b9bd6a08:/etc/mysql/conf.d# echo 'explicit_defaults_for_timestamp = 1' >> mysql.cnf 
root@8ab0b9bd6a08:/etc/mysql/conf.d# cat mysql.cnf 
[mysql]
[mysqld]
explicit_defaults_for_timestamp = 1
max_allowed_packet= 500M

 


分布式問題

1.需要使用同步方式解決dags目錄與worker的同步問題——待解決

2.需要解決scheduler的單點問題,可參考 apache-airflow 調度系統 https://blog.csdn.net/somezz/article/details/82749495

cankao :https://my.oschina.net/u/3770892/blog/3069220

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM