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'