Airflow是Airbnb开源的框架,可以做data pipeline和任务监控调度。它的优点在于能够非常方便的去监控、执行任务。比如每天重复要run的code,需要定时抓取的数据。
在airflow中有四个主要的概念:
DAG Run
在airflow中,可以自由定义任务的依赖关系,这样的结构关系可以组成一个DAG(有向无环图)。由于是有向无环图,从根源上杜绝了任务执行进入死循环的这种情况。并且通过配置任务图的start_time,end_time,interval time,能够灵活的开始执行一个定期的工作链。而DAG Run则是每次执行时候的实例,在UI中可以点进去看每次执行实例的执行情况
Task Instance
Task Instance和DAG Run可以看做是一个从属关系,每次执行job的时候,DAG Run表示一整个有向无环图的执行实例,图中一个个相互依赖的关系就是一个个task instance,任务实例。这些instance在UI中也可以非常方便的查看执行状态。如果其中一个instance failed了,我们可以clear这个instance,airflow会清空这个instance的执行状态,认为这个instance还未执行,需要被执行,这样这个instance就会再次run起来
Operator,Sensor
这俩是更细粒度的执行算子,operator是显示的操作,一个operator可以包进所有能够在python中被执行的工作。sensors则偏向隐式操作,可以去暂停执行依赖的任务,直到这些依赖任务满足条件,或者检查这些任务的执行状态
还有值得注意的是,airflow会有一个自己的db,用于存储任务相关的状态信息,以便airflow中的scheduler可以即时调度任务。
还没有正式的使用,过两天更新下airflow的具体代码使用方法