0 前言
Airflow是Airbnb内部发起的一个工作流管理平台。使用Python编写实现的任务管理、调度、监控工作流平台。Airflow的调度依赖于crontab命令,与crontab相比,Airflow可以方便地查看任务的执行状况(执行是否成功、执行时间、执行依赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知、查看错误日志。对于管理调度任务有很大的帮助。
crontab命令管理调度的方式总结来看存在以下几个方面的弊端:
1)在多任务调度执行的情况下,难以厘清任务间的依赖关系;
2)不便于查看当前执行到哪一个任务;
3)不便于查看调度流下每个任务执行的起止消耗时间,而这对于优化task作业是非常重要的;
4)不便于记录历史调度任务的执行情况,而这对于优化作业和排查错误是非常重要的;
5)执行任务失败时不便于查看执行日志,不方便定位报错的任务和接收错误告警邮件。
Airflow的官方文档地址是👇
http://airflow.apache.org/index.html,想使用Airflow管理调度任务的读者可反复研读官网文章,深入了解Airflow。
下面介绍在工程开发中如何去应用Airflow。
1 基础概念
在介绍Airflow这个调度工具前先介绍几个相关的基础概念。
DAG(Directed Acyclic Graph,有向无环图):
用于描述数据流的计算过程。
Operators:
描述了DAG中一个具体的task要执行的任务,如BashOperator为执行一条bash命令,EmailOperator用于发送邮件,HTTPOperator用于发送HTTP请求,PythonOperator用于调用任意的Python函数。
Task:
是Operator的一个实例,也就是DAG中的一个节点。
Task Instance:
记录task的一次运行。Task Instance有自己的状态,包括“running”“success”“failed”“skipped”“up for retry”等。
Triggher Rules:
指task的触发条件。
每一个节点可视为一个task,每个task用于执行一条任务,比如执行某个表的ETL加工。这些task调度任务按执行顺序的先后连接起来形成一个有向无环图
2 Airflow服务构成
一个正常运行的Airflow系统一般由以下几个服务构成。
1.WebServer
Airflow提供了一个可视化的Web界面,启动WebServer后,可以在Web界面上查看定义好的DAG并监控及改变其运行状况。也可以在Web界面中对一些变量进行配置。
2.Worker(Celery模式)
一般地,我们使用Celery Worker来执行具体作业。Worker可以部署在多台机器上,并可以分别设置接收的队列。当接收的队列中有作业任务时,Worker就会接收这个作业任务并开始执行。Airflow会自动在每个部署Worker的机器上同时部署一个Server Logs服务,这样就可以在Web界面上方便地查看分布在不同机器上的日志了。
3.Scheduler
整个Airflow的调度由Scheduler负责发起,每隔一段时间Scheduler就会检查所有定义完成的DAG和定义在其中的作业,如果有符合运行条件的作业,Scheduler就会发起相应的作业任务以供Worker接收。
4.Flower(Celery模式)
Flower提供了一个可视化界面用于监控所有Celery Worker的运行状况。
主要模块功能
通过Airflow的管理界面,可以了解其主要覆盖的功能模块。下面介绍Airflow主要覆盖的功能模块,这些模块在Airflow官网上有详细介绍。Airflow的工作流设计是有向无环图(DAG),在编写工作流时,需要考虑如何将任务划分为多个可独立执行的任务,然后将这些任务合并为一个逻辑整体,从而实现任务调度的结果。
1.DAG任务列表
首页中的DAG模块可以查看当前DAG的任务列表,包括当前有哪些DAG调度任务、哪些任务运行成功、哪些任务运行失败、哪些任务正在运行中。
Airflow任务调度

最低0.47元/天 解锁文章
705

被折叠的 条评论
为什么被折叠?



