Airflow是一款任務管理工具,管理、可視化相互依賴的任務(Bash任務),可把workflow當成DAG圖。
今天嘗試了一下apache airflow,之所以嘗試,因為業務腳本過多,相互依賴復雜。可視化和可理解性很差。
之前希望使用Oozie或者Azkaban進行管理,今天發現了Airflow,后端使用的Flask。看起來比較輕量化,理解起來也簡單。
===體驗后,有以下體驗:===
優點:安裝和啟動簡單,python腳本提交DAG學習成本低,web UI很好
缺點:1 DAG管理功能缺失(不能刪除或修改調度); 2 scheduler的執行缺乏文檔。每次都會從start_time把所有任務重新執行一遍; 3 時間戳所在時區有問題;
===官方QuickStart https://airflow.incubator.apache.org/start.html===
安裝:
需設置環境變量:AIRFLOW_HOME=[path/to/airfllow_home]
pip install airflow
alias airflow="path/to/airflow.py"
airflow initdb
airflow webserver -p [port]
遇到問題和解法:
1
? 添加用戶報錯:sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users
! 添加環境變量AIRFLOW_HOME
2
? user.password = psw時 AttributeError("can't set attribute")
! pip install 'sqlalchemy<1.2'