airflow介绍

1、为什么需要工作流调度系统

1、数据分析系统由大量的任务单元组成

    java job,python job ,bash job ,mapreduce job etc.

2、任务单元之间存在时间先后以及前后依赖关系

2、常见工作流调度系统

系统自带的工具:

        linux:crontab

        windows: 任务计划程序

开源:

        apache oozie  :重量级的任务调度系统,功能全面,配置复杂,XML文件定义工作流

         azkaban :solo server mode / multi server mode

        airflow :  

                        

3、为什么airflow

功能强大

    1. 系统配置($AIRFLOW_HOME/airflow.cfg)

    2. 作业管理($AIRFLOW_HOME/dags/xxxx.py)

    3. 运行监控(webserver)

    4. 报警(邮件)

    5. 日志查看(webserver 或 $AIRFLOW_HOME/logs/*)

    6. 后台调度服务(scheduler)

    7、支持15+operators,支持自定义operator

灵活易用(纯python编写)学习和维护成本低

airflow 免费

4、airflow 的几个重要概念

DAG : directed acyclic graphs 即有向无环图

       管理作业依赖关系

操作符 operator

     定义实际需要执行的作业

web服务器-webserver

    webserver 是 airflow 的界面展示

    可显示 DAG 视图,控制作业的启停,清除作业状态重跑,数据统计,查看日志,管理用户及数据连接等

    不运行 webserver 并不影响 airflow 作业的调度。

调度器-schduler

    调度器 schduler 负责读取 DAG 文件,计算其调度时间,当满足触发条件时则开启一个执行器的实例来运行相应的作业。

task:

    task是operator的一个实例,也就是DAGS中的一个node

    Task Instance:task的一次运行。task instance 有自己的状态,包括"running", "success", "failed", "skipped", "up for retry"等。   

    Task Relationships:DAGs中的不同Tasks之间可以有依赖关系,如 TaskA >> TaskB,表明TaskB依赖于TaskA。

执行器-Executor

执行器有 SequentialExecutor, LocalExecutor, CeleryExecutor

1. SequentialExecutor 为顺序执行器,默认使用 sqlite 作为知识库,由于 sqlite 数据库的原因,任务之间不支持并发执行

2. LocalExecutor 为本执行器,任务之间支持并发执行,常用于生产环境,需要配置数据库连接 url。

3. CeleryExecutor 为 Celery 执行器,需要安装 Celery ,Celery 是基于消息队列的分布式异步任务调度工具。需要额外启动工作节点-worker。使用 CeleryExecutor 可将作业运行在远程节点上。消息队列编排各个worker节点

4、DaskExecutor

猜你喜欢

转载自blog.csdn.net/Gzigithub/article/details/85256688