1.Airflow是什么
Airflow:可编程、调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控,而其web管理界面同样也可以方便的管控调度任务,并且对任务运行状态进行实时监控,方便了系统的运维和管理。
airflow最简单的理解就是一个高级版的crontab,解决了crontab无法解决的任务依赖问题。
2.Airflow拓扑结构
Airflow整体拓扑图:外部系统、MYSQL、airflow master.
- 外部系统:直接调用airflow的系统只有BGS、oneservice。
- master节点web ui管理dags、日志等信息,scheduler负责调度以及执行具体dag中的task。
- mysql数据库用来存储dag执行的相关的,记录dag里的task的依赖关系。
3.Airflow目录结构
airflow 程序目录结构一般有dags、shell、etl-shell、confFile、logs、batch、airflow.cfg、airflow-scheduler.err、airflow-scheduler.log、airflow-scheduler.out、airflow-scheduler.pid。
dags:dag任务存放目录。
shell:抽数shell脚本存放目录。
confFile:抽数的配置文件目录。
logs:dag任务执行的日志文件存放目录。
batch:dag生成的数据文件目录(一般要推送到sftp)
airflow.cfg:airflow的配置文件,如连接mysql的连接配置,各个目录的功能定义等。
airflow-scheduler.err:airflow调度器错误日志,每次重启会清空。
airflow-scheduler.log:airflow由初始安装至今的所有运行日志。
airflow-scheduler.out:airflow每次重启后运行日志。
airflow-scheduler.pid:记录pid的文件。
stop_start.sh:airflow的停启脚本(包括scheduler、web)。
4.Airflow常用命令
进入airflow环境中
sudo su - hadoop
workon airflow-env
在airflow中执行命令
airflow webserver -D && airflow scheduler -D
---web以及scheduler 一起启动
注意:平时如果重启airflow,一般是web以及scheduler一起重启。
airflow webserver -D
守护进程运行webserver --单独启动web服务
airflow scheduler -D
守护进程运行scheduler--单独启动调度服务
ps -ef|grep airflow|grep -v grep |awk '{print $2}'|xarge kill
---杀掉进程
airflow worker -c 1 -D
守护进程运行调度去
airflow pause dag_id
暂停任务
airflow unpause dag_id
取消任务,等于在管理界面打开off按钮
airflow list_tasks dag_id
查看task列表
airflow trigger_dag dag_id -r RUN_ID -e EXEC_DATE
运行整个dag文件
airflow run dag_id task_id execution_date
运行task