Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【 airflow 实战系列】 基于 python 的调度和监控工作流的平台

【 airflow 实战系列】 基于 python 的调度和监控工作流的平台

原创
作者头像
刘远
修改于 2017-06-29 02:38:42
修改于 2017-06-29 02:38:42
6.2K0
举报
文章被收录于专栏:刘远的专栏刘远的专栏

简介

airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。Airflow 被 Airbnb 内部用来创建、监控和调整数据管道。任何工作流都可以在这个使用 Python 来编写的平台上运行。

Airflow 是一种允许工作流开发人员轻松创建、维护和周期性地调度运行工作流(即有向无环图或成为 DAGs )的工具。在 Airbnb 中,这些工作流包括了如数据存储、增长分析、Email 发送、A/B 测试等等这些跨越多部门的用例。

这个平台拥有和 HivePrestoMySQLHDFS、Postgres 和 S3 交互的能力,并且提供了钩子使得系统拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于 Web 的用户界面让您可以可视化管道的依赖关系、监控进度、触发任务等。

传统 Workflow 通常使用 TextFiles ( json,xml/etc ) 来定义 DAG ,然后 Scheduler 解析这些 DAG 文件形成具体的 TaskObjec t执行; Airflow 没这么干,它直接用 Python 写 DAGdefinition ,一下子突破了文本文件表达能力的局限,定义 DAG 变得简单。

Airflow 的架构

在一个可扩展的生产环境中,Airflow 含有以下组件:

  • 一个元数据库(MySQL 或 Postgres)
  • 一组 Airflow 工作节点
  • 一个调节器(Redis 或 RabbitMQ)
  • 一个 Airflow Web 服务器

所有这些组件可以在一个机器上随意扩展运行。如果使用 LocalExcuter 来适度的安装则可以获得相当多的额外性能。

优点

  • python 脚本实现 DAG ,非常容易扩展
  • 工作流依赖可视化
  • no XML
  • 可测试
  • 可作为 crontab 的替代
  • 可实现复杂的依赖规则
  • Pools
  • CLI 和 Web UI

功能简介

常见命令

  • initdb,初始化元数据 DB,元数据包括了 DAG 本身的信息、运行信息等;
  • resetdb,清空元数据 DB;
  • list_dags,列出所有 DAG;
  • list_tasks,列出某 DAG 的所有 task ;
  • test,测试某 task 的运行状况;
  • backfill,测试某 DAG 在设定的日期区间的运行状况;
  • webserver,开启 webserver 服务;
  • scheduler,用于监控与触发 DAG 。

ETL

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库

Airflow 设计时,只是为了很好的处理 ETL 任务而已,但是其精良的设计,正好可以用来解决任务的各种依赖问题。

任务依赖

通常,在一个运维系统,数据分析系统,或测试系统等大型系统中,我们会有各种各样的依赖需求。比如:

  • 时间依赖:任务需要等待某一个时间点触发。
  • 外部系统依赖:任务依赖 Mysql 中的数据,HDFS 中的数据等等,这些不同的外部系统需要调用接口去访问。
  • 机器依赖:任务的执行只能在特定的某一台机器的环境中,可能这台机器内存比较大,也可能只有那台机器上有特殊的库文件。
  • 任务间依赖:任务 A 需要在任务 B 完成后启动,两个任务互相间会产生影响。
  • 资源依赖:任务消耗资源非常多,使用同一个资源的任务需要被限制,比如跑个数据转换任务要10个 G,机器一共就30个 G,最多只能跑两个,我希望类似的任务排个队。
  • 权限依赖:某种任务只能由某个权限的用户启动。

也许大家会觉得这些是在任务程序中的逻辑需要处理的部分,但是我认为,这些逻辑可以抽象为任务控制逻辑的部分,和实际任务执行逻辑解耦合。

如何理解 Crontab

现在让我们来看下最常用的依赖管理系统,Crontab。

在各种系统中,总有些定时任务需要处理,每当在这个时候,我们第一个想到的总是crontab。

确实,crontab 可以很好的处理定时执行任务的需求,但是对于 crontab 来说,执行任务,只是调用一个程序如此简单,而程序中的各种逻辑都不属于 crontab 的管辖范围(很好的遵循了 KISS )。

所以我们可以抽象的认为:

crontab 是一种依赖管理系统,而且只管理时间上的依赖。

Airflow的处理依赖的方式

Airflow 的核心概念,是 DAG (有向无环图),DAG 由一个或多个 TASK 组成,而这个 DAG 正是解决了上文所说的任务间依赖。Task A 执行完成后才能执行 Task B,多个Task之间的依赖关系可以很好的用DAG表示完善。

Airflow 完整的支持 crontab 表达式,也支持直接使用 python 的 datatime 表述时间,还可以用 datatime 的 delta 表述时间差。这样可以解决任务的时间依赖问题。

Airflow 在 CeleryExecuter 下可以使用不同的用户启动 Worke r,不同的 Worker 监听不同的 Queue ,这样可以解决用户权限依赖问题。Worker 也可以启动在多个不同的机器上,解决机器依赖的问题。

Airflow 可以为任意一个 Task 指定一个抽象的 Pool,每个 Pool 可以指定一个 Slot 数。每当一个 Task 启动时,就占用一个 Slot ,当 Slot 数占满时,其余的任务就处于等待状态。这样就解决了资源依赖问题。

Airflow 中有 Hook 机制(其实我觉得不应该叫 Hook ),作用时建立一个与外部数据系统之间的连接,比如 Mysql,HDFS,本地文件系统(文件系统也被认为是外部系统)等,通过拓展 Hook 能够接入任意的外部系统的接口进行连接,这样就解决的外部系统依赖问题。

参考

http://wingerted.com/2017/02/20/introduce-to-airflow/ https://www.youtube.com/watch?v=cHATHSB_450 https://www.youtube.com/watch?v=Pr0FrvIIfTU

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
最近我们被客户要求撰写关于ARMA-GARCH的研究报告,包括一些图形和统计输出。
拓端
2023/02/21
1.1K0
R语言: GARCH模型股票交易量的研究道琼斯股票市场指数|附代码数据
我将建立道琼斯工业平均指数(DJIA)日交易量对数比的ARMA-GARCH模型。 ``
拓端
2023/09/12
3080
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模|附代码数据
本文将说明单变量和多变量金融时间序列的不同模型,特别是条件均值和条件协方差矩阵、波动率的模型
拓端
2023/05/06
4700
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
本文将分析工业指数(DJIA)。工业指数(DIJA)是一个股市指数,表明30家大型上市公司的价值。工业指数(DIJA)的价值基于每个组成公司的每股股票价格之和(点击文末“阅读原文”获取完整代码数据)。
拓端
2022/11/01
6930
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融时间序列数据的波动性就倍受关注。同时,近几年又出现了研究股票市场的波动传递性
拓端
2023/01/12
1.5K0
R语言基于ARMA-GARCH-VaR模型拟合和预
本文显示了如何基于潜在的ARMA-GARCH过程(当然也涉及更广泛意义上的QRM)来拟合和预测风险价值(VaR)。
拓端
2020/11/19
1.1K0
R语言基于ARMA-GARCH-VaR模型拟合和预
时间序列GARCH模型分析股市波动率
在这篇文章中,我们将学习一种在价格序列中建立波动性模型的标准方法,即广义自回归条件异方差(GARCH)模型。
拓端
2022/03/11
2.6K0
时间序列GARCH模型分析股市波动率
R语言HAR和HEAVY模型分析高频金融数据波动率|附代码数据
在本文中,在学术界和金融界,分析高频财务数据的经济价值现在显而易见。(点击文末“阅读原文”获取完整代码数据)
拓端
2022/11/04
7810
R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
本文显示了如何基于潜在的ARMA-GARCH过程(当然也涉及更广泛意义上的QRM)来拟合和预测风险价值(VaR)。
拓端
2020/11/11
1K0
R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
R语言具有Student-t分布改进的GARCH(1,1)模型的贝叶斯估计|附代码数据
本说明介绍使用Student-t改进的GARCH(1,1)模型对汇率对数收益进行贝叶斯估计。
拓端
2023/09/13
2690
深度 | 在 R 中估计 GARCH 参数存在的问题
本文翻译自《Problems In Estimating GARCH Parameters in R 》
量化投资与机器学习微信公众号
2019/02/26
6.8K0
ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测|附代码数据
本文比较了几个时间序列模型,以预测SP500指数的每日实际波动率。基准是SPX日收益序列的ARMA-EGARCH模型。将其与GARCH模型进行比较  。最后,提出了集合预测算法 。
拓端
2022/11/15
5470
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值
拓端
2022/12/21
1.4K0
R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率
当您处理金融时间序列时,我们通常可以获得相对高频的观察结果。例如,每天进行观察是很常见的。事实上,现在可以获得每小时、分钟、秒甚至毫秒的观测值。
拓端
2025/03/28
1040
R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率
R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数
VaR方法作为当前业内比较流行的测量金融风险的方法,具有简洁,明了的特点,而且相对于方差来讲,更多的将投资人的损失作为风险具有更好的合理性。
拓端
2022/12/23
7440
R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代码数据
风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险
拓端
2023/02/23
1.3K0
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据
这篇文章讨论了自回归综合移动平均模型 (ARIMA) 和自回归条件异方差模型 (GARCH) 及其在股票市场预测中的应用
拓端
2023/01/13
1.8K0
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
最近我们被客户要求撰写关于ARIMA-ARCH / GARCH预测的研究报告,包括一些图形和统计输出。时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值
拓端
2022/12/06
1.5K0
推荐阅读
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
1.1K0
R语言: GARCH模型股票交易量的研究道琼斯股票市场指数|附代码数据
3080
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模|附代码数据
4700
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
6930
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
1.5K0
R语言基于ARMA-GARCH-VaR模型拟合和预
1.1K0
时间序列GARCH模型分析股市波动率
2.6K0
R语言HAR和HEAVY模型分析高频金融数据波动率|附代码数据
7810
R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
1K0
R语言具有Student-t分布改进的GARCH(1,1)模型的贝叶斯估计|附代码数据
2690
深度 | 在 R 中估计 GARCH 参数存在的问题
6.8K0
ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测|附代码数据
5470
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
1.4K0
R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率
1040
R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数
7440
R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代码数据
1.3K0
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据
1.8K0
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
1.5K0
相关推荐
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档