离线数仓任务调度系统Airflow——(Airflow体系架构,crontab简介,Airflow核心)

Airflow简介

  1. Airflow将一个工作流制定为一组任务的有向无环图(DAG),并指派到一组计算节点上,根据相互之间的依赖关系,有序执行。
  2. Airflow 有以下优势:
    1. 灵活易用。Airflow 是 Python 编写的,工作流的定义也使用 Python 编写;
    2. 功能强大。支持多种不同类型的作业,可自定义不同类型的作业。如 Shell、Python、Mysql、Oracle、Hive等;
    3. 作业的定义简单明了;
    4. 易扩展。提供各种基类供扩展,有多种执行器可供选择;

Airflow体系架构

在这里插入图片描述

  1. Webserver 守护进程。接受 HTTP 请求,通过 Python Flask Web 应用程序与airflow 进行交互。Webserver 提供功能的功能包括:中止、恢复、触发任务;监控正在运行的任务,断点续跑任务;查询任务的状态,日志等详细信息。
  2. Scheduler 守护进程。周期性地轮询任务的调度计划,以确定是否触发任务执行。
  3. Worker 守护进程。Worker负责启动机器上的executor来执行任务。使用celeryExecutor后可以在多个机器上部署worker服务。

Airflow重要概念

  1. DAG(Directed Acyclic Graph)有向无环图:

    1. 在Airflow中,一个DAG定义了一个完整的作业。同一个DAG中的所有Task拥有相同的调度时间。
    2. 参数:
      1. dag_id:唯一识别DAG
      2. default_args:默认参数,如果当前DAG实例的作业没有配置相应参数,则采用DAG实例的default_args中的相应参数
      3. schedule_interval:配置DAG的执行周期,可采用crontab语法
  2. Task为DAG中具体的作业任务

    1. Task依赖于DAG,必须存在于某个DAG中。Task在DAG中可以配置依赖关系
    2. 参数:
      1. dag:当前作业属于相应DAG
      2. task_id:任务标识符
      3. owner:任务的拥有者
      4. start_date:任务的开始时间

crontab简介

  1. Linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。
  2. Linux 系统也提供了Linux用户控制计划任务的命令:crontab 命令。

在这里插入图片描述
在这里插入图片描述
生成crontab表达式的网站【https://www.bejson.com/othertools/cron/

1. * 代表所有的取值范围内的数字。如月份字段为*,则表示112个月;
2. / 代表每一定时间间隔的意思。如分钟字段为*/10,表示每10分钟执行1次;
3. - 代表从某个区间范围,是闭区间。如2-5表示2,3,4,5,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次;
4. , 分散的数字(不连续)。如1,2,3,4,7,9

Airflow核心

  1. DAGs:有向无环图(Directed Acyclic Graph),将所有需要运行的tasks按照依赖关系组织起来,描述的是所有tasks执行的顺序;
  2. Operators:Airflow内置了很多operators
    1. BashOperator 执行一个bash 命令
    2. PythonOperator 调用任意的 Python 函数
    3. EmailOperator 用于发送邮件
    4. HTTPOperator 用于发送HTTP请求
    5. SqlOperator 用于执行SQL命令
    6. 自定义Operator
  3. Tasks:Task 是 Operator的一个实例;
  4. Task Instance:由于Task会被重复调度,每次task的运行就是不同的 Task instance。Task instance 有自己的状态,包括 success 、 running 、failed 、 skipped 、 up_for_reschedule 、 up_for_retry 、 queued 、no_status 等;
  5. Task Relationships:DAGs中的不同Tasks之间可以有依赖关系;
  6. 执行器(Executor)。Airflow支持的执行器就有四种:
    1. SequentialExecutor:单进程顺序执行任务,默认执行器,通常只用于测试
    2. LocalExecutor:多进程本地执行任务
    3. CeleryExecutor:分布式调度,生产常用。Celery是一个分布式调度框架,其本身无队列功能,需要使用第三方组件,如RabbitMQ
    4. DaskExecutor :动态任务调度,主要用于数据分析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值