Airflow核心概念理解

1.DAG

DAG是Directed Acyclic Graph的缩写,即有向无环图。是所有要执行任务脚本(即task)的集合,这个DAG描述了各个Task的依赖关系,调度时间,失败重启机制等。每个DAG的唯一标识是DAGid。每个DAG由1到多个task组成。

官方解释:

DAGs是一个用户希望执行的所有作业的集合,它定义了所有作业的依赖关系。

例如:一个简单的包含3个任务的DAG:A,B,C。A必须在B执行完毕后才可以执行,C可以在任何时刻执行。任务A在5分钟后超时,并且B可以重新启动最多5次以防它失败。workflow工作流程将在每天晚上10点运行,但不应该在某个特定日期之前开始。

 重要的是,DAG并不关心其组成任务的作用;它的工作是确保无论他们做什么在正确的时间,或正确的顺序,或正确处理任何意外的问题。

2.Task

task是具体执行的任务脚本,可以是一个命令行(BashOperator),也可以是python脚本等。

3.Task Instances

一个task实例代表一个task的特定运行,它的特征有:DAG、任务、和时间点。拥有的状态有:running、success、failed、skipped、up for retry等。

4.Operators

dags描述的是怎么去跑一个工作流,operators决定实际做什么,它定义了工作流中每一个task具体做什么事情。

airflow目前有一下几种operator:

BashOperator - 执行bash命令

PythonOperator - 调用任意Python函数

EmailOperator - 发送电子邮件

SimpleHttpOperator - 发送HTTP请求

MySqlOperator,SqliteOperator,PostgresOperator,MsSqlOperator,OracleOperator,JdbcOperator等 - 执行SQL命令

Sensor - 等待一定时间,文件,数据库行,S3键等...

5.Workflow

通过组合dags和operators,你会创建TaskInstances,你可以创建复杂的工作流。

6.default_args

default_args字典传递给DAG,它将把它们应用于任何运算符。这使得很容易将公共参数应用于许多运算符而无需多次键入。

default_args = {
    'start_date': datetime(2016, 1, 1),
    'owner': 'Airflow'
}

dag = DAG('my_dag', default_args=default_args)
op = DummyOperator(task_id='dummy', dag=dag)
print(op.owner) # Airflow

7.Bitshift Composition(位运算符)

利用>>,<<定义Operators的依赖关系。

op1 >> op2 表示:Op1先执行,Op2后执行。

Airflow核心概念理解_第1张图片

 

参考:

1.官网:http://airflow.apache.org

2.gitthub://github.com/apachecn/airflow-doc-zh

 

 

 

 

 

你可能感兴趣的:(BI)