跳转到主要内容
Chinese, Simplified

数据编排工具位于数据基础设施的中心,负责处理所有的数据管道和ETL工作负载。选择开源数据编排工具很困难,因为你可以从中选择很多,而且每一个都有竞争性的功能。您必须选择与现有基础设施配合良好的工具,并且不需要重新设计所有内容。

以下是五种流行的开源数据编排工具的列表

  1. Airflow
  2. Dagster
  3. Argo
  4. Prefect
  5. Luigi

Airflow

Airflow概述

Maxime Beauchemin也是Superset的创始人,他于2014年在Airbnb工作时创建了Airflow。自2015年开源以来,Airflow就被广泛采用。一年后,爱彼迎将其移交给Apache软件基金会进行维护。自那以后,Airflow的受欢迎程度有所上升,PayPal、Twitter、谷歌、Square等巨头都在大规模使用它。

AWS和谷歌云都提供Airflow作为托管服务。Airflow在Astronomer中的商业化身提供了先进的部署方法和优先支持。这证明,所有形状和规模的企业都选择使用Airflow,而不是使用更传统的专有工具,如Control-M和Talend。

Airflow数据编排功能

Airflow将数据工程的世界引入了有向无循环图(DAG)。它是一种很少使用的图形数据结构,但在创建没有循环依赖关系的复杂工作流时非常适合。

Airflow的设计考虑了数据工程师和开发人员的观点。其想法是为Airflow提供灵活性和可扩展性,以便使用各种工具和技术。气流运营商就是这样一个例子。有几个内置运算符,但如果它们不能满足您的要求,您可以编写自己的运算符。

在发布时,一些高级功能是Airflow独有的,例如任务使用XComs相互通信的能力,尽管有一些限制。Airflow有趣的新功能和更新可能会帮助您了解它是否是适合您的数据编排工具。

Airflow资源

Documentation | Slack | Guides | StackOverflow | Ecosystem

Dagster

Dagster概述

GraphQL的创建者Nick Schrock创建了Dagster。他是数据产品公司Elementl的创始人,该公司在2019年年中进入开源世界之前负责Dagster的初步开发。

Dagster的使命是增强工程师、分析师和业务用户的测试、开发和整体协作体验,同时处理他们每天遇到的大量工具和技术。

Dagster在市场上相对较新,但包括Mapbox、VMWare、DoorDash等在内的许多公司都足够信任它的能力,可以在生产中使用它。

Dagster数据编排功能

Airflow极大地激励着达格斯特。Dagster试图解决Airflow的许多缺点,例如本地测试和开发、动态工作流和临时任务运行中的问题。

Dagster走了一条不同的道路,它更具流动性,更容易集成。它通过将抽象提升到存储和计算的下一个层次来实现这一点。为了增强任务相关性的清晰度,Dagster要求对Ops进行强类型化。这有助于高效缓存和IO的轻松交换策略。

对基于DAG的工作流模型的全新采用、易于使用的API以及许多其他功能使Dagster成为一个可行的替代方案。Dagster提供了与最流行的工具的轻松集成,如dbt、 Great Expectations、Spark、Airflow、Pandas等。它还提供了一系列部署选项,包括Docker、k8s、AWS和谷歌云。请查看下面列出的资源,以确定Dagster是否适合您的数据编排工具。

Dagster资源

Documentation | Slack | Tutorials | StackOverflow

Argo

Argo概述

Argo是一个开源的本地容器,用于数据编排。它在Kubernetes上运行,如果您的基础设施的很大一部分是云原生的,那么它是一个很好的选择。Applatix(一家Intuit公司)于2017年创建了Argo,以使Kubernetes生态系统更加丰富。

云原生计算基金会(CNCF)维护着这个开源项目。包括GitHub、特斯拉、WordPress、Ticketmaster和Adobe在内的数百家公司使用Argo进行ML和数据管道工作负载。

Argo功能

Argo是独一无二的,因为它是唯一真正通用的云原生数据协调器。与Airflow和Dagster类似,Argo也利用了DAG的力量。在Argo中,DAG的每个步骤都是一个Kubernetes容器。使用Kubernetes,Argo可以毫无困难地协调并行作业,同时允许您随着业务的增长线性扩展。

市场上其他数据编排工具与Argo的另一个区别是,Argo使用YAML而不是Python来定义任务。为了让您的工作更轻松,Argo提供了一个JSON模式,使您的IDE能够验证YAML文件中指定的资源。

Argo还允许您在Kubernetes上本地创建CI/CD管道,而无需安装任何其他软件。这篇引人入胜的帖子讲述了Arthur Engineering如何选择Argo而不是Prefect和Airflow,以及为什么选择Argo可能会帮助您找到合适的数据编排工具。

Argo数据编排资源

Documentation | Slack | StackOverflow | Argo Blog | Roadmap

Prefect

Prefect概述

早在2017年,许多工程师,其中一些人曾在Apache Airflow上工作,在确定并解决了他们所经历的痛点后,创建了Prefect。Prefect的核心理念是创建一个更灵活、可定制和模块化的工具,以满足现代数据堆栈的需求。

包括Slate、Kaggle、Microsoft、PositiveSum和ClearCover在内的许多公司都使用Prefect来处理其数据管道和编排工作负载。

Prefect数据编排功能

Airflow的一个显著缺点是无法进行参数化或动态DAG。Airflow在处理复杂的分支逻辑和特殊任务运行方面也遇到了困难。虽然Airflow中有解决这些问题的方法,但它们并不干净,也不可扩展。Prefect采用了一种新的数据编排方法,并解决了这些问题。

在Prefect中运行特别任务很容易,因为预取将每个工作流都视为可调用的独立对象,不受任何预定义计划的约束。预取还允许任务接收输入和发送输出,从而使相互依赖的任务之间更加透明。

Prefect最近推出了v2.0版本,提供了一系列令人兴奋的功能,如支持永久运行的管道、基于事件的工作流、工作流版本控制等。截至目前,这个新版本的Prefect正在测试版中。您仍然可以尝试v1.0,看看它是否与您当前的数据体系结构相匹配。

预取资源

Documentation | StackOverflow | Slack | Discourse

Luigi

Luigi概述

Luigi于2011年在Spotify开发,改进了一些现有的编排引擎,如Oozie和Azkaban,这些引擎是专门为Hadoop生态系统构建的。Luigi采用了一种更通用的方法,使您能够编排不同类型的任务,如Spark作业、Hive查询等。

目前尚不完全清楚有多少企业在积极使用Oozie,但它仍在积极开发中,并有相当多的使用量,因为最新版本v1.20.0最晚在2021年12月发布。

Luigi数据编排功能

Luigi是Airflow的前身,所以它没有DAG的概念。相反,它使用任务和目标语义来定义依赖关系。一个任务的输出进入目标的输入,目标本身可以是一个为另一个目标提供食物的任务,从而创建一个任务链。由于非DAG设计,在Luigi中开发具有许多依赖项和分支的高度复杂的管道将极其困难。

如果你想要轻量级的东西,管理所需的时间要少得多,那么Luigi可能是一个不错的选择。此外,当您的管道没有复杂的依赖关系时,可以考虑使用基于DAG的工具。要了解更多关于该工具的信息并决定它是否适合您,请访问他们的官方博客,查看一些最新版本的发布说明。

Luigi资源公司

Documentation | Blog | YouTube | Slack

列出的所有开源数据编排工具都是不错的选择。最适合您的将在很大程度上取决于您现有的数据堆栈和您的主要用例。


数据编排工具:相关阅读

原文地址
https://atlan.com/open-source-data-orchestration-tools/
本文地址
Article

微信

知识星球

微信公众号

视频号