https://www.zhihu.com/search?type=content&q=Airflow%E4%BD%BF%E7%94%A8%E7%9A%84%E5%8E%9F%E7%90%86%E6%98%AF%E4%BB%80%E4%B9%88
https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html
Airflow 是一个以编程方式编写、安排和监控工作流的平台。
Airflow是将多个任务按照其依赖关系组织起来进行管理调度的工具。
Airflow基于python编写,通过python脚本可以配置和使用其作为data pipeline。除了命令行之外,Airflow提供了web可视化界面,用来管理和监控任务的执行,并且可以查看任务依赖关系图。Airflow可以方便同Hive、Presto、MySQL、HDFS、Postgres 等数据库交互,另外,提供了hook便于扩展。DAG(有向无环图)是Airflow工作流的基本概念。DAG的每个节点表示一个任务,有向边是任务之间的依赖。每个任务具有原子性,保证在任务失败的时候可以自动或手动重试该任务,而不必重启整个DAG。这些任务和依赖构成的DAG就是一个工作流。
为什么要Airflow在一个系统中,任务通常不是完全独立执行的,任务的调度运行常常取决于一些其他因素。比如定时任务存在时间依赖,crontab可以解决这个依赖问题,在Airflow中既兼容crontab的时间表示,同时也可以使用python的datetime模块来表示时间;在多个任务之间可以存在任务间的依赖,某些任务必须在其他特定任务之后才能执行,DAG管理的就是这些任务间依赖;除此之外,任务还可能存在资源依赖,例如依赖某些系统外部资源。
工作自动化在所有行业中都起着关键作用,它是实现功能效率的最快方法之一。我们大多数人都必须处理不同的工作流程,例如:从多个数据库收集数据、对其进行预处理、上传和报告。 所以,如果我们的日常任务能按照规定的时间自动触发,并且所有流程都按顺序执行,那就太好了。Apache Airflow 就是这样一种非常有帮助的工具。无论是数据科学家、数据工程师还是软件工程师,你都一定会发现这个工具很有用。在本文中,我们将为你介绍什么是 Apache Airflow。
Task的生命周期
Task的生命周期有一下八种:
其状态的转化如下图所示:
DAG(Directed Acyclic Graph)是Airflow的核心概念之一,DAG体现的是你的工作流,它由Python脚本定义,其中包含了你想要运行的一系列task,同时其中还定义了这些task的依赖关系。 DAG代表了一个供调度的工作流,它的主要配置项包括owner,schedule。DAG支持多种调度方式,你可以指定该DAG定时调度,如每天的5am,也可以指定它周期性调度,如每二十分钟调度一次。 DAG由其中的task组成。例如,一个简单的DAG可以包括三个任务:A,B,C。我们可以让B依赖于A,在A成功执行之后运行B,而C可以在任意时候运行。
需要注意的是,DAG本身并不关注A,B,C三个任务的具体内容,它关注的是三个任务的执行顺序以及依赖条件。



