白鲸开源发布迁移工具 Airphin 并开源,2 步迁移 Airflow 至 Dolphinscheduler
2022 3 年 2 月 22 日,白鲸开源正式发布调度系统迁移工具 Airphin,并宣布将其开源。借助 Airphin,用户可 2 步将调度系统从 Airflow 迁移至 Apache DolphinScheduler,为有调度系统迁移需要的用户带来极大便利。
Airphin是什么?
Airphin 是白鲸开源研发的开源迁移工具, 目的是将 Apache Airflow DAGs 文件转换成 Apache DolphinScheduler Python SDK 定义文件,从而实现用户将调度系统(Workflow orchestration)从 Airflow 迁移到 DolphinScheduler 的目的。它是一个基于多规则的 AST 转换器,使用 LibCST 来解析和转换 Airflow 的 DAG 代码,其全部规则使用 Yaml 文件定义,并提供了一定的自定义规则扩展能力。
近期,Airphin 已经发布了0.0.12 版本,提供了丰富的功能,可以更好地帮助用户完成 Airflow 到 Apache DolphinScheduler 的迁移。
注释:AST 是 Abstract Syntax Tree(抽象语法树)的缩写,它是一种以树状结构表示代码语法结构的数据结构。在编译器中,AST 是由词法分析器和语法分析器生成的。词法分析器将源代码转换成标记流(token stream),语法分析器将标记流转换成抽象语法树。AST 是一种树状结构,它由一系列节点组成,每个节点表示代码中的一个语法结构(如表达式、语句、函数、类等),节点之间的关系表示语法结构之间的嵌套关系。
为什么开源Airphin?
可能有人会问,为什么我需要一个迁移工具?这是因为随着业务的发展,企业或组织原来使用的工作流编排系统已经无法满足当前的需求,需要将工作流编排系统迁移到新的平台或者更新到新的版本。经过调研,很多用户有了将调度系统从开源工作流编排系统 Airflow 迁移到 Apache DolphinScheduler 上来的需求。
在迁移过程中,由于数据处理任务可能涉及多个系统之间的依赖关系,迁移过程需要确保在不影响业务运行的前提下完成。此时,调度系统迁移工具就可以发挥重要作用,它能减少人工干预,尽量自动化地完成两个调度系统间的迁移工作,并且能兼容多个系统间的多个版本,几乎可以做到用户无干预完成迁移。
为此,白鲸开源专门研发了开源迁移工具 Airphin,可以让用户 2 步将调度系统从 Airflow 迁移至 Apache DolphinScheduler,为用户带来极大的便利。
为了让大家更好地理解 Airphin 的重要性,我们先从调度系统的相关背景知识开始,了解将调度系统从 Airflow 迁移至 Apache DolphinScheduler 的好处。
为什么要从Airflow 迁移至DolphinScheduler?
01 什么是工作流编排系统?
工作流编排系统,是以尊重编排规则和业务逻辑的方式管理数据流。工作流编排工具让用户可以将多个有关联的任务转换为可以安排、运行和观测的工作流,帮助企业更好地管理和控制业务流程,从而提高业务效率。工作流编排是数据处理流程中不可或缺的组件之一,负责根据预先定义的规则和逻辑执行数据处理任务,确保数据处理流程按照预期顺利执行,常见工作流编排系统包括 Apache DolphinScheduler、Apache Airflow、Apache Oozie, Azkaban 等。
02 Airflow是什么?
其中,Apache Airflow 是一个开源的工作流编排系统,它可以帮助用户创建、调度和监控复杂的工作流程。Airflow 最初由 Airbnb 开发,并于 2016 年开源,现在由 Apache 软件基金会维护。Airflow 使用 Python 语言编写,具有高度的可扩展性和灵活性,支持多种任务类型,如计算、数据处理、通知、交互等。Airflow 的工作流程是通过编写 Python 脚本来定义的,可以使用 Airflow 提供的操作符和钩子,以及自定义操作符和钩子来扩展其功能。但其有着不可忽视的缺陷,比如需要需要深度二次开发,脱离社区版本,升级成本高;Python 技术栈维护迭代成本高;scheduler loop 扫描 Dag folder 延迟降低性能的问题;以及在生产环境中使用稳定性差等。
在新数据时代业务需求下诞生的 Apache DolphinScheduler 是一个开源的分布式工作流调度系统,弥补了以往调度系统的弱势,旨在为企业用户提供一种可靠、高效、易于使用的工作流调度平台,支持多种任务类型,如计算、数据处理、ETL 等。
与 Airflow 相比,DolphinScheduler 采用了分布式架构,提供了多种任务类型,用户可以定义任务之间的依赖关系,设置任务的优先级和调度策略等,其使用可视化的界面来创建和管理工作流程的特性更是与 Airflow 形成鲜明对比,变得更加易于操作,对非编程人员来说更加友好。
经过调研对比,对于很多用户来说,将调度系统迁移至 Apache DolphinScheduler 是一个降本增效的更优选择。
Airphin 如何安装和使用
Airphin 是一个 python 的包,可以通过 Python 的包安装工具 pip 完成安装,详见airphin getting start(https://airphin.readthedocs.io/en/latest/start.html#install)。
python -m pip install --upgrade airphin
一个简单的例子
我们通过一个简单的例子,来说明如何使用 Airphin 的。我们截取了 airflow tutorial.py 中的部分代码作为 Airphin 转化的例子,来说明 Airphin 如何逐步完成转化成 dolphinscheduler python sdk。
图1:airflow tutorial.py 中的部分代码
图2:Airphin 如何逐步完成转化成 dolphinscheduler python sdk
假设将 airflow tutorial.py 部分内容保存至文件 tutorial_part.py,想要将其转化成 dolphinscheduler python sdk 定义,只需要一行命令就能完成。结果如图 2 所示,因为命令增加了 --inplace 参数,所以 Airphin 会直接将原文件覆盖,如果不需要覆盖原问题,可以不使用 --inplace 参数,Airphin 会新增一个 tutorial_part-airphin.py 文件来保存转化后的内容。
airphin migrate --inplace tutorial_part.py
通过观察,我们发现这次转化分别触发了多条转化规则,包括
将 airflow.DAG 转换成 pydolphinscheduler.core.process_definition.ProcessDefinition,这个规则在第三行(import语句)以及第六行 DAG context
将 airflow.operators.bash.BashOperator 转换成 pydolphinscheduler.tasks.shell.Shell,这个规则在任务 t1,t2 中都被使用
除了对应的类转化之外,我们需要将类的属性进行转化,如将 airflow.DAG.schedule_interval 转换成了 ProcessDefinition.schedule,同时修改了部分值的内容,如将 timedelta(days=1) 转成 '0 0 0 * * ? *'
最后,我们只需要安装 pydolphinscheduler ,并且将转化后的文件通过 python 运行,就能完成工作流的迁移了,详见 pydolphinscheduler 使用(https://dolphinscheduler.apache.org/python/main/start.html#installing-pydolphinscheduler)。
# 安装 apache-dolphinscheduler
python -m pip install apache-dolphinscheduler
# 将工作流提交到 dolphinscheduler
python tutorial_part.py
在运行 python tutorial_part.py 时,需要保证 dolphinscheduler API 和 python gateway 服务已经启动,并且开放了对应的端口,详见启动 python gateway service(https://dolphinscheduler.apache.org/python/main/start.html#start-python-gateway-service)。
至此,我们通过一个简单的例子,说明了 Airphin 是如何完成迁移的。
想要尝试 Airphin 的用户,欢迎按照安装使用说明,使用新功能并反馈使用体验。
参考链接:
airphin(https://github.com/WhaleOps/airphin)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Water v2.10.1 发布,一站式服务治理平台
Water(水孕育万物...) Water 为项目开发、服务治理,提供一站式解决方案(可以理解为微服务架构支持套件)。基于 Solon 框架开发,并支持完整的 Solon Cloud 规范;已在生产环境奔跑了5年。对中小型项目而言,有它便有一切。 功能相当于:consul + rabbitmq + elk + prometheus + openFaas + quartz + 等等,并有机结合在一起。 或者约等于:nacos + rocketmq + PlumeLog + prometheus + magic-api + xxl-job + 等。 对 k8s 友好,支持 ip 漂移、支持 k8s service 映射(通过上游配置,可真接将服务发现为 k8s service 地址)。 本次更新 solon 升级为: 2.1.4 snack3 升级为:3.2.54 luffy 升级为:1.6.0 (函数计算的引擎框架) 调整 faas / sdk_water 的 js 实现,改由 java 封装 调整 faas / sdk_rock 的 js 实现,改由 java 封装 增加 faas g...
- 下一篇
ZQPool 1.2 发布,连接池软件
ZQPool 是一个可以替代 pgbouncer 的连接池软件 ,在 1.2 版本中主要做了一下改进: 1. 之前的版本不支持文本大小超过64K的SQL语句,新版本没有此限制了; 2. 连接池上增加了参数msg_buf_size,可以指定接收或发送消息的缓冲区默认大小; 3. 增强了日志的功能; 4. 修复了一些小问题。 ZQPool 主要解决 PostgreSQL 生态中流行的连接池软件 pgbouncer 软件的一些缺点。通常使用数据库连接池的主要目的有两个: 1. 减少到数据库上的连接数。应用程序到连接池软件上有 M 个连接,这 M 个连接不是同时都繁忙的,这 M 个连接上同一个时刻发来的并发 SQL 可能只有 N 个(N 通常大大小于 M),这样连接池软件只需要在后端数据库上建 N 个连接。就可以满足了要求。这个场景通常是 java 应用。 我们可以想象一个场景:一个 java 应用可能部署在 200 台主机上,而每个主机上 java 应用自身会开启一个 java 连接池,这个 java 连接池假设开 20 个连接,这时到数据库上就有 200*20=4000 个连接,这些连接实...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境