Apache Airflow 是一个灵活的,可扩展的工作流自动化和调度系统,用于管理数百 PB 的大数据处理管道。该项目最初由 Airbnb 于2014年开发,于2016年03月进入提交给 Apache 孵化器,2019年01月08日 Apache 基金会正式宣布其成为 Apache 顶级项目。
Apache Airflow 将一个具有上下级依赖关系的工作流,组装成一个有向无环图(DAG),Airflow scheduler 根据依赖关系在一组 workers 上运行这些 Tasks。Airflow scheduler 拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(hook)使其拥有很好地扩展性。 除了使用命令行,该工具还提供了一个 WebUI 可以可视化的查看依赖关系、监控进度、触发任务等。
Apache Airflow 系统由很多不同角色的服务组成,其架构如下:
image.png
可以看出 Apache Airflow 系统由 metadata database、 web server、scheduler、Celery excutor、message broker 以及 Celery workers 等六个部分组成,这些组件的作用如下:

  • Metadata database:存储任务状态信息,一般会选择使用 MySQL 数据库来存储;
  • Airflow web server:用于查询元数据以监视和执行 DAGs 的 web 接口;
  • Scheduler:调度器从元数据中查看任务的状态,并决定哪些任务需要被执行以及任务执行优先级的过程,调度器通常作为服务运行;
  • Excutor:执行器是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。有不同类型的执行器,每个执行器都使用一个指定工作进程的类来执行任务。例如,LocalExecutor 使用与调度器进程在同一台机器上运行的并行进程执行任务。其他像 CeleryExecutor 的执行器使用存在于独立的工作机器集群中的工作进程执行任务。
  • message broker:在队列中存储需要运行任务的命令,比如 RabbitMQ ;
  • Celery Workers:实际执行任务逻辑的进程,它从队列中检索命令,并运行它,然后更新元数据。

    参考

    官方:Airflow官方网站
    http://airflow.apache.org