前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >闲聊Airflow 2.0

闲聊Airflow 2.0

作者头像
哒呵呵
发布于 2021-08-12 03:46:26
发布于 2021-08-12 03:46:26
2.8K00
代码可运行
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记
运行总次数:0
代码可运行

在 2020 年 12 月 17 日 Apache Airflow 团队发布了 Apache Airflow 2.0.0。当时就想写写 Airflow 的新特性,但是粗略的看了下《Apache Airflow 2.0 is here!》这篇文章,发现 Airflow2.0 是一个超级大的版本更新,不仅仅 UI 更新了,最核心的组件 Scheduler 性能也有了极大的提升,分布式环境下的高可用模型也做了改变,同时还有 Airflow 上的 Operator 和 Hook 也做了新的分门别类,对于这个版本在复杂的生产环境下是否能稳定运行,感到一丝怀疑,遂后面没有在关注了。

等了半年后,注意到 Airflow 已经发布版本到 2.1.1 了,而且Airflow 1.0+的版本也即将不再维护,自己也做了小规模测试,基本上可以确定 Airflow2.0 可以作为生产环境下的版本了,遂有了这篇文章,对 Airflow2.0 简单介绍下。

参考:https://github.com/apache/airflow/blob/main/UPDATING.md。目前为止 Airflow 2.0.0 到 2.1.1 的版本更新没有什么大的变化,只是一些小的配置文件和行为逻辑的更新,比如Dummy trigger在2.1.1版本过时了、DAG concurrency 配置更改了。

所以最大的版本更新还是在于 Airflow2.0.0,在这一次版本更新里,包括了:

更新 UI

这块的话,取决于个人审美吧,毕竟只是一个调度系统,长啥样都没有什么影响。具体可以参考下面这个动图:

引入编写 dag(有向无环图)的新方法:TaskFlow API

新的方法对依赖关系的处理更清晰,XCom 也更易于使用。第一次看到这种的调度配置方式,还是在 prefect 调度系统上,感兴趣的话,可以看看:https://listen-lavender.gitbook.io/prefect-docs/gettingstarted/whynotairflow。

我认为这种新的配置调度方式的引入,极大改善了如何调度机器学习模型的配置任务,写过用 Airflow 调度机器学习模型的读者可以比较下,TaskFlow API 会更好用。

TaskFlow API 像下面这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from airflow.decorators import dag, task
from airflow.utils.dates import days_ago

@dag(default_args={'owner': 'airflow'}, schedule_interval=None, start_date=days_ago(2))
def tutorial_taskflow_api_etl():
   @task
   def extract():
       return {"1001": 301.27, "1002": 433.21, "1003": 502.22}

   @task
   def transform(order_data_dict: dict) -> dict:
       total_order_value = 0

       for value in order_data_dict.values():
           total_order_value += value

       return {"total_order_value": total_order_value}

   @task()
   def load(total_order_value: float):

       print("Total order value is: %.2f" % total_order_value)

   order_data = extract()
   order_summary = transform(order_data)
   load(order_summary["total_order_value"])

tutorial_etl_dag = tutorial_taskflow_api_etl()
Fully specified REST API (AIP-32)
提升 Scheduler 性能

对于 Scheduler 性能优化的想法从 2019 年 03 月 02 日就开始了,到 2.0.0 终于实现了突破,这部分的历程可以看看 AIP-15(https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103092651)。

之前 Scheduler 的分布式执行是使用主从模型,但是在 Airflow 2.0 改成了主主模型,我的理解是就是基于元数据库,所有的 Scheduler 都是对等的。带来的优势就是:

  • 之前崩溃的调度程序的恢复时间主要依赖于外部健康检查第一时间发现识别故障,但是现在停机时间为零且没有恢复时间,因为其他主动调度程序会不断运行并接管操作。
  • 支持读单个调度程序进行更改,而不会影响其他调度程序。

对于某个单 Scheduler 来说,1.7 就引入了 DAG 序列化,通过使 Web 服务器无需解析 DAG 文件而允许它读取序列化的DAG,大大提高了 DAG 文件的读取性能。Airflow 2.0 Scheduler 通过使用来自数据库的序列化后 DAG 进行任务调度和调用,扩展了 DAG 序列化的使用。这减少了重复解析 DAG 文件以进行调度所需的时间。

当然最后有一份性能对比,可以看看:

简化 KubernetesExecutor

这块用的不多,就直接摘抄了。

Airflow 2.0 重新建立了 KubernetesExecutor 架构,为 Airflow 用户提供更快、更容易理解和更灵活的使用方式。用户现在可以访问完整的 Kubernetes API 来创建一个 .yaml pod_template_file,而不是在 airflow.cfg 中指定参数。 此外还用pod_override参数替换了executor_config词典,此项变化从 KubernetesExecutor 删除了三千多行代码,使其运行速度更快,并减少潜在错误。

Airflow 核心和提供者(providers)

Airflow 终于将 operator,sensor或hook 拆分为 60 多个 packages,而不是都放在一起了。最简单的例子就是:让 airflow.contrib 变得非常大,以至于依赖管理以及下一版本的计划和测试都变得充满挑战。

在Airflow 2.0中,已根据可与Airflow一起使用的外部系统对模块进行了重组。这意味着,如果您想使用与AWS相关的operators,而不是与GCP和Kubernetes相关的operators,则只能使用Amazon提供程序子软件包安装Airflow:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install apache-airflow[amazon]

这项更改意义重大,因为它可以使关注点分离,更快的特定组件发布周期以及更干净的组织结构,使您可以在其中找到与特定外部系统相关的代码。从早期版本迁移工作流时,请确保使用正确的导入。例如,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from airflow.providers.amazon.aws.operators.athena import AWSAthenaOperator
更智能的传感器 (sensors)

传感器(sensors)非常棘手,因为它们一直在寻找状态,并且可能会消耗大量资源。在新版本中,Airflow引入了对传感器逻辑的更改,以使其更加节省资源和更智能。就个人而言,我倾向于使用事件驱动的AWS Lambda函数处理用例,这些用例通常在Airflow中通过传感器使用(例如,当特定文件到达S3后立即触发管道)。但是,此功能对于许多希望将所有工作流程保持在一个地方而不是依赖于FaaS进行事件驱动的人来说非常有用。

TaskGroup 功能

SubDAG 通常用于在 UI 中对任务进行分组,但它们的执行行为有许多缺点(主要是它们只能并行执行单个任务!)为了改善这种体验,我们引入了“TaskGroup”:一种用于组织任务提供与 subdag 相同的分组行为,而没有任何执行时间缺陷。

总结

可惜的是,Airflow 的调度时间问题依然没有得到解决。2.0 最大的更新我认为是 Scheduler 性能的提升,这真的是让我惊讶了,毕竟之前老版本 Scheduler 对 DAG 文本文件的解析是真的慢,现在改造成了序列化的方式,快了不止一点。其它的话,TaskFlow API的引入,会帮助 Airflow 更好的兼容机器学习模型的部署和调度。

参考链接:

  1. https://github.com/apache/airflow/blob/main/UPDATING.md
  2. https://www.oschina.net/news/125503/airflow-2-0-released
  3. https://blog.csdn.net/weixin_42731853/article/details/116226461
  4. https://www.infoq.cn/article/q837wbetfsatfithbbi9
  5. https://medium.com/apache-airflow/apache-airflow-2-0-tutorial-41329bbf7211
  6. https://airflow.apache.org/blog/airflow-two-point-oh-is-here/
  7. https://www.astronomer.io/blog/airflow-2-scheduler
  8. https://www.astronomer.io/blog/introducing-airflow-2-0
  9. https://www.nextlytics.com/blog/apache-airflow-2.0-new-features
  10. https://databand.ai/blog/airflow-2-0-and-why-we-are-excited-at-databand/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你不可不知的任务调度神器-AirFlow
Airflow 是一个编排、调度和监控workflow的平台,由Airbnb开源,现在在Apache Software Foundation 孵化。AirFlow 将workflow编排为tasks组成的DAGs,调度器在一组workers上按照指定的依赖关系执行tasks。同时,Airflow 提供了丰富的命令行工具和简单易用的用户界面以便用户查看和操作,并且Airflow提供了监控和报警系统。
王知无-import_bigdata
2021/01/06
3.9K0
你不可不知的任务调度神器-AirFlow
助力工业物联网,工业大数据之服务域:AirFlow的架构组件【三十二】
示例:http://airflow.apache.org/docs/apache-airflow/stable/tutorial.html
Maynor
2023/08/16
4820
助力工业物联网,工业大数据之服务域:AirFlow的架构组件【三十二】
大数据调度平台Airflow(五):Airflow使用
以上python文件就是Airflow python脚本,使用代码方式指定DAG的结构
Lansonli
2022/03/29
12.1K2
大数据调度平台Airflow(五):Airflow使用
AIRFLow_overflow百度百科
Airflow 是一个 Airbnb 的 Workflow 开源项目,使用Python编写实现的任务管理、调度、监控工作流平台。Airflow 是基于DAG(有向无环图)的任务管理系统,可以简单理解为是高级版的crontab,但是它解决了crontab无法解决的任务依赖问题。与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依 赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。
全栈程序员站长
2022/11/01
2.4K0
AIRFLow_overflow百度百科
如何部署一个健壮的 apache-airflow 调度系统
介绍了如何安装、配置、及使用,本文介绍如何如何部署一个健壮的 apache-airflow 调度系统 - 集群部署。
somenzz
2020/12/10
6.5K0
如何部署一个健壮的 apache-airflow 调度系统
助力工业物联网,工业大数据之服务域:Shell调度测试【三十三】
解决:统一使用BashOperator或者PythonOperator,将对应程序封装在脚本中
Maynor
2023/08/17
2660
助力工业物联网,工业大数据之服务域:Shell调度测试【三十三】
大数据调度平台Airflow(二):Airflow架构及原理
Airflow我们可以构建Workflow工作流,工作流使用DAG有向无环图来表示,DAG指定了任务之间的关系,如下图:
Lansonli
2022/03/29
6.7K1
大数据调度平台Airflow(二):Airflow架构及原理
Apache Airflow的组件和常用术语
The many functions of Airflow are determined by the perfect interaction of its components. The architecture can vary depending on the application. It is thus possible to scale flexibly from a single machine to an entire cluster. The graphic shows a multi-node architecture with several machines. Airflow 的许多功能取决于其组件的完美相互作用。体系结构可因应用程序而异。因此,可以从单台机器灵活地扩展到整个集群。该图显示了具有多台计算机的多节点体系结构。
DevOps云学堂
2022/12/29
1.4K0
Apache Airflow的组件和常用术语
大数据调度平台Airflow(六):Airflow Operators及案例
Airflow中最重要的还是各种Operator,其允许生成特定类型的任务,这个任务在实例化时称为DAG中的任务节点,所有的Operator均派生自BaseOparator,并且继承了许多属性和方法。关于BaseOperator的参数可以参照:
Lansonli
2022/03/29
8.4K2
大数据调度平台Airflow(六):Airflow Operators及案例
Introduction to Apache Airflow-Airflow简介
Airflow是一个以编程方式创作、调度和监控工作流程的平台。这些功能是通过任务的有向无环图(DAG)实现的。它是一个开源的,仍处于孵化器阶段。它于2014年在Airbnb的保护伞下进行了初始化,从那时起,它在GitHub上获得了大约800个贡献者和13000颗星星的良好声誉。Apache Airflow 的主要功能是调度工作流程,监控和创作。
DevOps云学堂
2022/12/29
2.6K0
Introduction to Apache Airflow-Airflow简介
Airflow速用
Airflow是Apache用python编写的,用到了 flask框架及相关插件,rabbitmq,celery等(windows不兼容);、
用户1558882
2019/10/31
5.7K0
Airflow 实践笔记-从入门到精通一
数据处理逻辑多,脚本相互依赖强,运维管理监测难,怎么办?!为了解决这些问题,最近比较深入研究Airflow的使用方法,重点参考了官方文档和Data Pipelines with Apache Airflow,特此笔记,跟大家分享共勉。
大数据技术架构
2022/06/14
5.8K0
Airflow 实践笔记-从入门到精通一
Apache Airflow:安装指南和基本命令
The more preferable approach to installing Apache-Airflow is to install it in a virtual environment. Airflow requires the latest version of PYTHON and PIP (package installer for python).
DevOps云学堂
2022/12/29
3.1K0
Apache Airflow:安装指南和基本命令
闲聊调度系统 Apache Airflow
Apache Airflow 是一个由开源社区维护的,专职于调度和监控工作流的 Apache 项目,于2014年10月由 Airbnb 开源,2019年1月从 Apache 基金会毕业,成为新的 Apache 顶级项目。
哒呵呵
2019/12/24
9.4K5
Apache Airflow-编写第一个DAG
Apache Airflow: Write your first DAG in Apache Airflow
DevOps云学堂
2022/12/29
1.9K0
Apache Airflow-编写第一个DAG
Apache Airflow 2.3.0 在五一重磅发布!
大家好,我是一哥,在这个五一假期,又一个Apache项目迎来了重大版本更新——Apache Airflow 2.3.0 在五一重磅发布!
数据社
2022/05/26
2K0
Apache Airflow 2.3.0 在五一重磅发布!
认识Airflow的DAG
前文Airflow的第一个DAG已经跑起来了我们的第一个任务. 本文就来丰富这个任务.
Ryan-Miao
2019/09/30
2.4K0
认识Airflow的DAG
Airflow 实践笔记-从入门到精通二
数据处理逻辑多,脚本相互依赖强,运维管理监测难,怎么办?!为了解决这些问题,最近比较深入研究Airflow的使用方法,重点参考了官方文档和Data Pipelines with Apache Airflow,特此笔记,跟大家分享共勉。
大数据技术架构
2022/06/14
3K0
Airflow 实践笔记-从入门到精通二
实用调度工具Airflow
引言 前面写过一篇文章《端午搬砖:聊聊调度云服务》,主要讲云服务的。如果企业也业务上云,可以优先选用这些服务,减少工作量。 而在传统企业内部,数据集成是基础,更是每个企业里面都至少有一个ETL工具或者
大数据和云计算技术
2018/03/08
3.9K0
实用调度工具Airflow
Centos7安装Airflow2.x redis
——————————————————————————————————————————————
待你如初见
2021/04/27
1.9K0
相关推荐
你不可不知的任务调度神器-AirFlow
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档