本篇文章给大家分享的是有关任务调度神器airflow怎么用呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
airflow 是 apache下孵化项目,是纯 Python 编写的一款非常优雅的开源调度平台。github 上有 8971 个星(猫注:现在是 15.4K),是非常受欢迎的调度工具。airflow 使用 DAG (有向无环图) 来定义工作流,配置作业依赖关系非常方便,豪不夸张地说:方便程度简直甩其他任务调度工具一条街。
airflow 有着以下天然优势:
5. 丰富的命令工具,你甚至都不用打开浏览器,直接在终端敲命令就能完成测试,部署,运行,清理,重跑,追数等任务,想想那些靠着在界面上不知道点击多少次才能部署一个小小的作业时,真觉得 airflow 真的太友好了。
airflow 是免费的,我们可以将一些常做的巡检任务,定时脚本(如 crontab ),ETL处理,监控等任务放在 airflow 上集中管理,甚至都不用再写监控脚本,作业出错会自动发送日志到指定人员邮箱,低成本高效率地解决生产问题。但是由于中文文档太少,大多不够全全,因此想快速上手并不十分容易。首先要具备一定的 Python 知识,反复阅读官方文档,理解调度原理。本系列分享由浅入深,逐步细化,尝试为你揭开 airflow 的面纱。
从一个使用者的角度来看,调度工作都有以下功能:
7. 后台调度服务(scheduler)
除了短信需要自己实现,其他功能 airflow 都有,而且在 airflow 的 webserver 上我们可以直接配置数据库连接来写 sql 查询,做更加灵活的统计分析。
除了以上的组成部分,我们还需要知道一些概念
Linux 的 crontab 和 windows 的任务计划,他们可以配置定时任务或间隔任务,但不能配置作业之前的依赖关系。airflow 中 DAG 就是管理作业依赖关系的。DAG 的英文 directed acyclic graphs 即有向无环图,下图 1 便是一个简单的 DAG
图 1:DAG 示例
在 airflow 中这种 DAG 是通过编写 Python 代码来实现的,DAG 的编写非常简单,官方提供了很多的例子,在安装完成后,启动 webserver 即可看到 DAG 样例的源码(其实定义了 DAG 对象的 python 程序),稍做修改即可成为自己的 DAG 。上图 1 中 DAG 中的依赖关系通过下述三行代码即可完成:
是不是非常简洁,并且是 —human-readable。
DAG 定义一个作业流,Operators 则定义了实际需要执行的作业。airflow 提供了许多 Operators 来指定我们需要执行的作业:
后续会介绍如何使用这些 Operators 敬请关注。
airflow 1.9 之前的版本使用本地时区来定义任务开始日期,scheduler_interval 中 crontab 表达式中的定时也是依据本地时区为准,但 airflow 1.9 及后续新版本将默认使用 UTC 时区来确保 airflow 调度的独立性,以避免不同机器使用不同时区导致运行错乱。如果调度的任务集中在一个时区上,或不同机器,但使用同一时区时,需要对任务的开始时间及 cron 表达式进行时区转换,或直接使用本地时区。目前 1.9 的稳定版本还不支持时区配置,后续版本会加入时区配置,以满足使用本地时区的需求。
webserver 是 airflow 的界面展示,可显示 DAG 视图,控制作业的启停,清除作业状态重跑,数据统计,查看日志,管理用户及数据连接等。不运行 webserver 并不影响 airflow 作业的调度。
调度器 schduler 负责读取 DAG 文件,计算其调度时间,当满足触发条件时则开启一个执行器的实例来运行相应的作业,必须持续运行,不运行则作业不会跑批。
当执行器为 CeleryExecutor 时,需要开启一个 worker。
执行器有 SequentialExecutor, LocalExecutor, CeleryExecutor
CeleryExecutor 为 Celery 执行器,需要安装 Celery ,Celery 是基于消息队列的分布式异步任务调度工具。需要额外启动工作节点-worker。使用 CeleryExecutor 可将作业运行在远程节点上。
以一张思维导图总结今天的内容:
以上就是任务调度神器airflow怎么用呢,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。